【发布时间】:2018-12-26 04:31:51
【问题描述】:
我创建了一个应用程序来学习 ReactJS。不幸的是,当我尝试使用上下文时,出现 1 个渲染错误,但我的应用编译良好。
这是我的代码:
import React, {Component} from 'react';
const LoginContext = React.createContext(null);
const user = {
isLoggedIn: true,
username: 'test',
};
class App extends Component {
constructor(props) {
super(props);
this.state = {
isLoggedIn: false,
user: user,
};
}
render() {
return (
<LoginContext.Provider user={this.state.user}>
<Welcome/>
</LoginContext.Provider>
);
}
}
class Welcome extends Component {
render() {
return (
<div>
<WelcomeText/>
</div>
);
}
}
class WelcomeText extends Component {
render() {
return (
<LoginContext.Consumer>
<div>
{(user) => (<p>{user.username}</p>)}
</div>
</LoginContext.Consumer>
);
}
}
export default App;
这是错误: 更新上下文消费者 http://localhost:3000/static/js/bundle.js:20927:23
20924 | {
20925 | ReactCurrentOwner.current = workInProgress;
20926 | ReactDebugCurrentFiber.setCurrentPhase('render');
> 20927 | newChildren = render(newValue);
| ^ 20928 | ReactDebugCurrentFiber.setCurrentPhase(null);
20929 | } // React DevTools reads this flag.
20930 |
你能帮我解决这个问题吗?
【问题讨论】:
-
1.在提供者中,使用
value=2.消费者必须直接包装函数;<div>必须在函数外部(或函数内部):codesandbox.io/s/7m24ry4vqj
标签: javascript reactjs react-context