gpt4 book ai didi

reactjs - 重构 withState 如何更新 Prop 变化

转载 作者:行者123 更新时间:2023-12-02 09:16:23 26 4
gpt4 key购买 nike

我有一个高阶组件,我尝试稍微修改一下(我不熟悉重组)。

这就是我的组件:

<Map mycenter={mycenter}  />

如果 mycenter 更新,我希望 map 组件更新或重新呈现。我正在尝试修改代码 https://github.com/istarkov/google-map-thousands-markers/blob/master/src/Map.js

我对代码做了一些修改。首先, map 中心设置为 mycenter。行得通。

withState('mapParams', 'setMapParams', ({ mycenter }) => ({ center:mycenter, zoom: 12 })),

之后用户可以点击某处,中心将被修改

withHandlers({
onMapParamsChange: ({ setMapParams }) => ({ center, zoom, bounds }) => {
setMapParams({ center, zoom, bounds });
console.log('setMapParams', { center, zoom });
},

如果更新“mycenter”,是否有办法让组件重新渲染或更新中心?

最佳答案

目前最好的方法是使用生命周期。初始状态的回调 (({ mycenter }) => ({ center:mycenter, zoom: 12 })) 只发生一次。

const enhanceMap = compose(
withState('mapParams', 'setMapParams', ({ mycenter }) => ({ center: mycenter, zoom: 12 })),
withStateHandlers({...}),
lifecycle({
componentWillUpdate(nextProps) {
if (this.props.mycenter !== nextProps.mycenter)
this.setState({mapParams: { center: nextProps.mycenter, zoom: 12 }})
}
})
)

关于reactjs - 重构 withState 如何更新 Prop 变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com