【发布时间】:2021-01-12 02:03:21
【问题描述】:
我在下面发布了一个答案,但如果有人能解释为什么这是必要的,你会得到赏金,我经历了一个 redux 教程,感觉我没有了解mapDispatchToProps,只了解mapStateToProps。如果您能更深入地解释 mapStateToProps 和 mapDispatchToProps 到底在做什么以及它们有何不同,我将给予您赏金。
我有一个 mapStateToProps 函数,看起来像
const mapStateToProps = state => {
return {
firstName: state.firstName,
middleName: state.middleName,
lastName: state.lastName,
}
}
const ReduxTabForm = connect(mapStateToProps)(MyTab)
在我的MyTab 组件中,我有一个按钮,如果这两个字段没有输入任何内容,则该按钮应该处于非活动状态,但按钮是否被禁用的状态不会改变
function App() {
const {firstName, lastName} = store.getState().formData
const isDisabled = () => {
const {firstName, lastName} = store.getState().form
const requiredFields = [firstName, lastName]
alert(requiredFields)
for(let i = 0; i < requiredFields.length; i=i+1){
if (!requiredFields[i]){
return true
}
}
return false
}
return (
<div className="App">
<div className='bg-light rounded'>
<div className='px-sm-5 pt-0 px-4 flexCenterCol mx-5'>
<div>
<input
type='text'
className="form-control"
value={store.getState().formData['firstName']}
placeholder="First Name"
onChange={(e) => {
store.dispatch(setFormData({'firstName': e.target.value}))
}}
></input>
<input
type='text'
className="form-control"
value={store.getState().formData['lastName']}
placeholder="Last Name"
onChange={(e) => {
store.dispatch(setFormData({'lastName': e.target.value}))
}}
></input>
</div>
<button
type="submit"
disabled={isDisabled()}
>
Button
</button>
</div>
</div>
</div>
)
}
该警报语句在页面刷新时执行,但在我输入数据之后的任何时间都不会执行。我已经检查了 redux 状态更新并且它是。但是按钮不会更新,isDisabled 函数不会运行多次
【问题讨论】:
-
const mapStateToProps = state => ({ firstName: state.firstName, middleName: state.middleName, lastName: state.lastName, }) 你能像我上面写的那样写吗?
-
@Aftab22 没用,抱歉
标签: reactjs redux mapstatetoprops mapdispatchtoprops