【发布时间】:2019-05-13 19:44:09
【问题描述】:
我一直在使用 react 16.2,并且 context 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 方法被调用,但之后没有任何反应。
【问题讨论】:
标签: javascript reactjs react-context