Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

reactjs - How to pass the values from different components using React js

I have Three components like Main.js is the parent components Main.js has two different class components like Employee.js and EmployeeAddress.js.

Both components called from Main.js. I can access parent Main.js properties values from Employee.js as well as EmployeeAddress.js.

I want to get the details from Employee.js properties values to EmployeeAddress.js

For ex. I want to display EmployeeName value into EmployeeAddress.js. if modified EmployeeName textbox value from Employee.js

export default class Main extends React.Component {

constructor(props){
  super(props)
}
render(){
return(
<Employee />
<EmployeeAddress />
);
}

I want to pass values from Employee.js to EmployeeAddress.js Note : Both components are different not having parent and child relationships.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

//Main.js:

export default class Main extends React.Component {

constructor(props){
  super(props)
  this.state={
    employee : {
       employeeName: '',
       //otherData
    }
  }
}

function handleEmployeeData(data) {
  this.setState({
    employee: data
  })
}

render(){
  return(
    <Employee handleEmployeeData={this.handleEmployeeData} employee={this.state.employee}/>
    <EmployeeAddress handleEmployeeData={this.handleEmployeeData} employee={this.state.employee}/>
   );
}

//Employee.js or EmployeeAddress.js

Here set new employee data when onChange or onClick happens, this will set the employee data in parent state which both children can use

inside these files' render method you can do something like:

<NameInput* onBlur={e => this.props.handleEmployeeData({...this.props.employee, name: e.target.value})} />

You can do something like this, for any field in employeeData

  • Notice NameInput is a placeholder you can replace it with any component you want

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...