作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个高阶组件,我尝试稍微修改一下(我不熟悉重组)。
这就是我的组件:
<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/
我是一名优秀的程序员,十分优秀!