我如何在 React 的 recompose 生命周期方法中设置状态?
How do I setState within React's recompose's lifecycle method?
我在我的 React 项目中使用重构
https://github.com/acdlite/recompose/
这是一个很棒的图书馆。我使用 compose
实用程序作为容器组件,将状态作为 props 传递给展示组件,如下所示:
const enhance = compose(
lifecycle({
componentDidMount() {
myCall
.getResponse([productId])
.then(products => {
setIsReady(true);
});
},
}),
withState('isAvailable', 'setIsAvailable', false),
withState('isReady', 'setIsReady', false),
mapProps(({
setIsAvailable,
setIsReady,
...state,
}) => ({
onLogoutTouchTap: () => {
...
注意 componentDidMount
中的 setIsReady(true)
调用。这就是我想要做的,但是 lifecycle/componentDidMount 无法访问 setIsReady
。我怎样才能通过重组实现从 componentDidMount
更新状态的预期结果?
好吧,我发现如果将 lifecycle
方法移到 withState
方法之后,则可以通过访问 this.props.setterFunction
来访问设置器。就我而言,这是我一直在寻找的解决方案:
const enhance = compose(
withState('isAvailable', 'setIsAvailable', false),
withState('isReady', 'setIsReady', false),
lifecycle({
componentDidMount() {
myCall
.getResponse([productId])
.then(products => {
this.props.setIsReady(true);
});
},
}),
mapProps(({
setIsAvailable,
setIsReady,
...state,
}) => ({
onLogoutTouchTap: () => {
...
我在我的 React 项目中使用重构 https://github.com/acdlite/recompose/
这是一个很棒的图书馆。我使用 compose
实用程序作为容器组件,将状态作为 props 传递给展示组件,如下所示:
const enhance = compose(
lifecycle({
componentDidMount() {
myCall
.getResponse([productId])
.then(products => {
setIsReady(true);
});
},
}),
withState('isAvailable', 'setIsAvailable', false),
withState('isReady', 'setIsReady', false),
mapProps(({
setIsAvailable,
setIsReady,
...state,
}) => ({
onLogoutTouchTap: () => {
...
注意 componentDidMount
中的 setIsReady(true)
调用。这就是我想要做的,但是 lifecycle/componentDidMount 无法访问 setIsReady
。我怎样才能通过重组实现从 componentDidMount
更新状态的预期结果?
好吧,我发现如果将 lifecycle
方法移到 withState
方法之后,则可以通过访问 this.props.setterFunction
来访问设置器。就我而言,这是我一直在寻找的解决方案:
const enhance = compose(
withState('isAvailable', 'setIsAvailable', false),
withState('isReady', 'setIsReady', false),
lifecycle({
componentDidMount() {
myCall
.getResponse([productId])
.then(products => {
this.props.setIsReady(true);
});
},
}),
mapProps(({
setIsAvailable,
setIsReady,
...state,
}) => ({
onLogoutTouchTap: () => {
...