Redux'un yapılacaklar örneğini anlamaya çalışmak için parçalara ayırıyorum. mapDispatchToPropsSevk eylemlerini props olarak eşleştirmenize izin verdiğini okudum , bu yüzden addTodo.jsdispatch (addTodo ()) yerine mapDispatchToProps kullanmak için yeniden yazmayı düşündüm . Ben aradım addingTodo(). Bunun gibi bir şey:
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
Ben app çalıştırdığınızda, ancak, bu hatayı alıyorum: Error: Invalid value of type object for mapStateToProps argument when connecting component AddTodo.. mapStateToPropsAddTodo bileşeniyle hiç başlamazdım, bu yüzden neyin yanlış olduğundan emin değildim. İçimdeki his diyor connect()beklediği mapStateToPropsönce gelmesi mapDispatchToProps.
Çalışan orijinal şuna benzer:
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
Tam depo burada bulunabilir .
Öyleyse sorum şu: mapStateToProps olmadan mapDispatchToProps yapmak mümkün mü? Kabul edilebilir bir uygulama yapmaya çalıştığım şey mi - değilse, neden olmasın?