Igg*_*ggy 70 javascript reactjs redux react-redux
我正在分解Redux的todo示例以试图理解它.我读过,mapDispatchToProps
允许你将调度动作映射为道具,所以我想重写addTodo.js
使用mapDispatchToProps而不是调用dispatch(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
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,我收到此错误: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
Run Code Online (Sandbox Code Playgroud)
完整的回购可以在这里找到.
所以我的问题是,是否有可能在没有mapStateToProps的情况下执行mapDispatchToProps?我正在努力做一个可以接受的做法 - 如果不是,为什么不呢?
iof*_*sli 115
是的你可以.只是null
作为第一个参数传递:
AddTodo = connect(
null,
mapDispatchToProps
)(AddTodo)
Run Code Online (Sandbox Code Playgroud)
是的,这不仅仅是可接受的练习,它是推荐的触发动作的方法.使用mapDispatchToProps
允许隐藏在反应组件中使用redux的事实
归档时间: |
|
查看次数: |
20242 次 |
最近记录: |