Node.js React中从父级到子级的回调函数
我有一个父Node.js React中从父级到子级的回调函数,node.js,reactjs,express,Node.js,Reactjs,Express,我有一个父应用程序和一个子组件登录。在Login组件中,用户可以正确登录,我可以将用户详细信息存储在setState中。但是我想通过名为userState的回调函数将此状态传递给父级App 这是父级应用程序: const { BrowserRouter, Link, Switch, Route, browserHistory } = ReactRouterDOM; class App extends React.Component { constructor(props) { su
应用程序
和一个子组件登录
。在Login
组件中,用户可以正确登录,我可以将用户详细信息存储在setState
中。但是我想通过名为userState
的回调函数将此状态传递给父级App
这是父级应用程序:
const { BrowserRouter, Link, Switch, Route, browserHistory } = ReactRouterDOM;
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
currentUser: ""
}
}
userState = (user) => {
this.setState = {
currentUser: user
}
}
render() {
return (
<BrowserRouter>
<div>
<Nav />
<Switch>
<Route exact path="/someroute1">
<Someroute1 />
</Route>
<Route path="/login">
<Login userState={this.userState} currentUser={this.state.currentUser} />
</Route>
<Route path="/route2">
<Someroute2 />
</Route>
</Switch>
<Footer />
</div>
</BrowserRouter>
);
}
}
ReactDOM.render(<App />, document.querySelector(".container"));
我已经阅读了本教程,并从stackoverflow中找到了很多答案,但不知何故,我的回调函数什么都没做
感谢您的帮助 这是您收到的错误
首先,家长JS看起来很棒
在childJS中有一些问题,它们从这里开始:
this.state = {
...
currentUser: this.props.currentUser
}
大概它们会一直延伸到组件的其余部分(即显示用户所看到的内容的位置)
您需要做的是保持数据流的一致性。ChildJS不需要状态,它只需要显示父状态(由道具传递)
ParentJS(状态:用户,设置状态)=>
子JS将是:render(){return({currentUser}})
用say这可能会帮助你
母公司
从“../Child.js”导入子项;
类父级扩展组件{
getValue=(数据)=>{
//登录数据
控制台日志(数据);
}
render(){
返回(
)
}
}
孩子
类子级扩展组件{
onLogin=()=>{
this.props.getValue('anydata to parent here');
}
render(){
返回(
这个.onLogin}>Login
)
}
}
对您有帮助吗?在父组件中的userState
方法中,您不应该为this.setState
赋值,而是使用this.setState
作为设置状态的方法:this.setState({currentUser:user})
。有关setState
方法的详细信息。
this.state = {
...
currentUser: this.props.currentUser
}
import Child from '../child.js';
class Parent extends Component {
getValue = (data) =>{
//Login data
console.log(data);
}
render(){
return(
<div>
<Child getValue={this.getValue} />
</div>
)
}
}
class Child extends Component {
onLogin = () =>{
this.props.getValue('any data to parent here');
}
render(){
return(
<div>
<button onClick={()=>this.onLogin}>Login</button>
</div>
)
}
}