gpt4 book ai didi

javascript - 将 React 16.2 升级到 16.8 后,上下文消费者收到以前的值而不是当前值

转载 作者:行者123 更新时间:2023-11-30 19:34:12 25 4
gpt4 key购买 nike

我一直在使用 React 16.2,并且上下文 api 使用以下结构按预期工作。

const MyContext = createContext(null);

class Provider extends Component {
state = {
id: 'A value I set'
}

onUpdate = (e) => {
const { id } = e.dataset
this.setState({ id });
}

render() {
const { children } = this.props;
const { id } = this.state;
return(
<MyContext.Provider value={id}>
{children}
</MyContext.Provider>
)
}
}

function ConsumerHOC(WrappedComponent) {
function renderWrappedComponent(id) {
return <WrappedComponent id={id} />
}
return (
<MyContext.Consumer>
{renderWrappedComponent}
</MyContext.Consumer>
)
}

当我切换到 React 16.8 时,此代码出现故障。每当调用 onUpdate 时,都会更新提供者值。但是,消费者永远不会收到更新后的值。

如果我记录时间线,我可以看到 react 的内部 propagateContextChange 方法被调用,但之后没有任何反应。

最佳答案

我自己回答的!我只升级了 react,而忘了升级 react-dom。新版本的react依赖于新版本的react-dom,所以升级打破了react context。

关于javascript - 将 React 16.2 升级到 16.8 后,上下文消费者收到以前的值而不是当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56118936/

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