我可能缺少一些非常明显的东西,想让自己清楚。
这是我的理解。
在朴素的react组件中,我们有states
&props
。更新state
时会setState
重新渲染整个组件。props
大多是只读的,更新它们没有任何意义。
在订阅redux商店的react组件中,通过类似于store.subscribe(render)
,它每次商店更新时都会重新渲染。
react-redux具有一个帮助程序,它通常通过类似以下方式connect()
注入状态树的一部分(组件感兴趣)和actionCreators props
组件
const TodoListComponent = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
但是,了解到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>
)
有人可以指出我所缺少的正确方向吗?
据我所知,redux只能做的事情是,如果您的组件依赖于突变状态,则在更改商店状态时会调用componentWillRecieveProps,然后您应该强制组件更新其状态,如下所示
1存储区状态更改2-调用(componentWillRecieveProps(()=> {3组件状态更改}))