我可能遗漏了一些非常明显的东西,想要清除自己.
这是我的理解.
在一个天真的反应组件中,我们有states
&props
.state
通过setState
重新渲染更新整个组件.props
大部分是只读的,更新它们没有意义.
在通过类似的方式订阅redux商店的react组件中store.subscribe(render)
,它显然会在每次更新商店时重新呈现.
react-redux有一个帮助器connect()
,它注入部分状态树(组件感兴趣)和actionCreators props
关于组件,通常通过类似的方式
const TodoListComponent = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
Run Code Online (Sandbox Code Playgroud)
但是要理解a setState
对于对TodoListComponent
redux状态树更改(重新渲染)做出反应是必不可少的,我在组件文件中找不到任何state
或setState
相关的代码TodoList
.它读起来像这样:
const TodoList = ({ todos, onTodoClick }) => (
<ul>
{todos.map(todo =>
<Todo
key={todo.id}
{...todo}
onClick={() => onTodoClick(todo.id)}
/>
)}
</ul>
)
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向,我错过了什么?
PS我正在关注与redux包捆绑在一起的todo list示例(https://github.com/reactjs/redux/tree/master/examples/todos/src/containers).