ฉันกำลังแยกตัวอย่างสิ่งที่ต้องทำของ Redux เพื่อพยายามทำความเข้าใจ ฉันอ่านว่าmapDispatchToProps
ช่วยให้คุณสามารถจับคู่การดำเนินการจัดส่งเป็นอุปกรณ์ประกอบฉากได้ดังนั้นฉันจึงคิดว่าaddTodo.js
จะเขียนใหม่เพื่อใช้ mapDispatchToProps แทนการเรียกการจัดส่ง (addTodo ()) addingTodo()
ผมเรียกมันว่า สิ่งนี้:
import React from 'react';
import {connect} from 'react-redux';
import addTodo from '../actions';
let AddTodo = ({addingTodo}) => {
let input;
return (
<div>
<form onSubmit={e => {
e.preventDefault()
if (!input.value.trim()) {
return
}
addingTodo(input.value)
input.value = ""
}}>
<input ref={node => {
input = node
}} />
<button type="submit">Submit</button>
</form>
</div>
)
}
const mapDispatchToProps = {
addingTodo: addTodo
}
AddTodo = connect(
mapDispatchToProps
)(AddTodo)
export default AddTodo
แต่เมื่อฉันใช้ app Error: Invalid value of type object for mapStateToProps argument when connecting component AddTodo.
ที่ฉันได้รับข้อผิดพลาดนี้: ฉันไม่เคยmapStateToProps
เริ่มต้นด้วยส่วนประกอบ AddTodo ดังนั้นฉันจึงไม่แน่ใจว่ามีอะไรผิดปกติ ความรู้สึกของฉันบอกว่าconnect()
คาดว่าจะนำหน้าmapStateToProps
mapDispatchToProps
ต้นฉบับที่ใช้งานได้มีลักษณะดังนี้:
import React from 'react';
import {connect} from 'react-redux';
import addTodo from '../actions';
let AddTodo = ({dispatch}) => {
let input;
return (
<div>
<form onSubmit={e => {
e.preventDefault()
if (!input.value.trim()) {
return
}
dispatch(addTodo(input.value))
input.value = ""
}}>
<input ref={node => {
input = node
}} />
<button type="submit">Submit</button>
</form>
</div>
)
}
AddTodo = connect()(AddTodo)
export default AddTodo
คำถามของฉันคือเป็นไปได้ไหมที่จะทำ mapDispatchToProps โดยไม่มี mapStateToProps เป็นสิ่งที่ฉันพยายามปฏิบัติเป็นที่ยอมรับ - ถ้าไม่ทำไมไม่ทำ?