在使用react hooks的开发过程中
我们有个从仓库取值并监听仓库值变化的需求
之前我们使用的是常规的react-redux的 connect - mapStateToProps
代码语言:javascript复制import { useSelector, connect } from 'react-redux'
const mapStateToProps = (state) => {
return {
newSearchOptions: state.controller.newSearchOptions.toJS(),
}
}
监听仓库值的变化
useEffect(() => {
console.log('newSearchOptions:', newSearchOptions)
}, [newSearchOptions])
export default connect(mapStateToProps)(SearchResultCommon)
取值方面我们想方便一点 就使用了useSelector
代码语言:javascript复制 const newSearchOptions = useSelector((state) =>
state.controller.newSearchOptions.toJS()
)
但是坑来了。。我们在监听仓库值变化的时候,页面就开始无限循环了
因为此时的useSelector 被当作是页面的state,如果在useEffect中更新state,就会无限循环。。
所以只能使用上面的方式进行仓库值的变化监听...
看来有时候还是不能省事啊