Nic*_*der 10 javascript reactjs redux
在基于React + Redux的项目中,我有一个connect()ed组件,它通过API提取来检查用户权限.提取的权限存储在Redux存储中.
该组件基本上看起来像<Can check="...">...</Can>,与我们的API(通过Redux操作)对话以解决检查.如果授予了权限,this.props.children则呈现,null否则.
为此,从商店中的授权数据mapStateToProps()计算passesprop,用<Can />s render()方法检查.我利用ownProps参数来mapStateToProps()获取"要检查的东西"并计算passes标志.
有一些缓存正在进行,所以我不会重新获取每个组件挂载,它基本上有效.但是,有时候,当passesprop更新时,组件将不会重新渲染true(但是在导航之后渲染 - 使用反应路由器 - 然后再返回,所以基本上如果组件被重新安装).
请connect()编辑组件重新渲染,如果从输出mapStateToProps()的变化?该文档为react-redux的connect()这样说:
如果将ownProps指定为第二个参数,则其值将是传递给组件的props,并且只要组件接收到新的props,就会重新调用mapStateToProps.
这是否意味着传入ownProps会将渲染更改为仅在道具更改时重新渲染,或者以其他方式重新渲染?如何理解有关记忆/返回功能的说明mapStateToProps(),或者甚至不相关?
谢谢
Dan*_*mov 11
如果mapStateToProps()的输出发生变化,connect()ed组件是否会重新渲染?react-redux的connect()的文档说:
函数的输出本身不能改变.必须先触发此功能才能重新评估.
如果Redux状态发生变化,mapStateToProps则重新进行评估.
如果从父组件接收的props非常不相等(已更改)并且您使用ownProps参数,mapStateToProps则也会重新评估.
如果mapStateToProps返回的值与上次调用的值相等,则React Redux将跳过渲染.如果它返回浅不相等的值,则将重新呈现包装的组件.假设它mapStateToProps本身是一个纯函数.
但是,有时候,当传递道具更新为true时,组件不会重新渲染
请创建一个复制此项的最小项目,并提交相关代码示例的问题.
如何理解关于memoization /从mapStateToProps()返回函数的注释,或者甚至不相关?
不相关的.
这里要了解几件事:
connect将浅层比较上次mapState调用当前mapState调用的输出.如果没有任何改变,它将不会重新渲染包装的组件.connect仅mapState在商店通知订阅者时运行.但是,如果你的mapState函数被声明为带两个参数,connect则将包装组件的props作为第二个arg传入,允许你做类似的事情state.somePerItemData[ownProps.itemId].它随后会mapState在传入的道具不同时调用,因为这可能会影响输出mapState.mapState参数传递,这可以为每个组件实例创建唯一的选择器函数实例.所有这一切,我担心我对你未更新的组件的实际问题没有具体的答案.我可能需要更详细地查看代码.
| 归档时间: |
|
| 查看次数: |
6092 次 |
| 最近记录: |