Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应16两个组件通信_Reactjs_React 16 - Fatal编程技术网

Reactjs 反应16两个组件通信

Reactjs 反应16两个组件通信,reactjs,react-16,Reactjs,React 16,ReactJS两个组件通信,从角度来说,我们只是使用服务最佳方式,但这里我是React16的新手。react中的两个组件可以通过以下方式通信 父组件->子组件通过道具 子级->父级通过回调 Child->Child通过使用其壁橱父组件 例如: import React,{Component}来自'React'; 类父级扩展组件{ 构造函数(){ 超级() 此.state={ 姓名:“约翰·多伊” } this.changeName=this.changeName.bind(this) } 更改名

ReactJS两个组件通信,从角度来说,我们只是使用服务最佳方式,但这里我是React16的新手。

react中的两个组件可以通过以下方式通信

父组件->子组件通过道具

子级->父级通过回调

Child->Child通过使用其壁橱父组件

例如:

import React,{Component}来自'React';
类父级扩展组件{
构造函数(){
超级()
此.state={
姓名:“约翰·多伊”
}
this.changeName=this.changeName.bind(this)
}
更改名称(新名称){
这是我的国家({
姓名:newName
})
}
render(){
返回(
//使用道具将数据从父组件传递到子组件
//name={this.state.name}changeName={this.changeName}
)
}
}
功能儿童(道具){
返回(
子组件中的我的名字是:{props.name}
//使用回调将数据从子组件传递到父组件
//onClick={()=>props.changeName('Jeremy Smith')}
props.changeName('Jeremy Smith')}>更改名称
//单击按钮时,“Jeremy Smith”将传递给父组件并
//从其传递给子组件和第二个子组件
//通过这种方式,我们可以在两个子组件之间进行通信
)
}
第二儿童功能(道具){
在第二个子组件中返回我的名字:{props.Name}
}
另外

您还可以使用React上下文API将数据向下传递给子组件


或者使用状态管理库(如redux)创建单个共享存储并将所需数据传递给组件。

react中的两个组件可以通过以下方式进行通信

父组件->子组件通过道具

子级->父级通过回调

Child->Child通过使用其壁橱父组件

例如:

import React,{Component}来自'React';
类父级扩展组件{
构造函数(){
超级()
此.state={
姓名:“约翰·多伊”
}
this.changeName=this.changeName.bind(this)
}
更改名称(新名称){
这是我的国家({
姓名:newName
})
}
render(){
返回(
//使用道具将数据从父组件传递到子组件
//name={this.state.name}changeName={this.changeName}
)
}
}
功能儿童(道具){
返回(
子组件中的我的名字是:{props.name}
//使用回调将数据从子组件传递到父组件
//onClick={()=>props.changeName('Jeremy Smith')}
props.changeName('Jeremy Smith')}>更改名称
//单击按钮时,“Jeremy Smith”将传递给父组件并
//从其传递给子组件和第二个子组件
//通过这种方式,我们可以在两个子组件之间进行通信
)
}
第二儿童功能(道具){
在第二个子组件中返回我的名字:{props.Name}
}
另外

您还可以使用React上下文API将数据向下传递给子组件


或者使用状态管理库(如redux)创建单个共享存储并将所需数据传递给组件。

取决于组件在树中的相互关系:(1)向下传递道具,(2)使用上下文API(3)使用共享存储解决方案(如redux或mobxI)要共享我的登录详细信息,请访问我们的所有组件,在angular7,我们这里有最好的服务方式,哪一种是react 16中最好的方式。请帮我谢谢Advanced我们只是在使用服务-这只是其中一种方式。另一种方式是通过共同的父母沟通。这是你在React中通常使用的方式。另一种方法是通过全局状态Redux或上下文API进行通信。React只是视图层,由您自己决定。最流行的解决方案是
redux
+
react redux
软件包,有很多关于这方面的教程,对于新手来说,设置和习惯有点棘手。除此之外,
mobx
+
mobx react
可能是第二流行的,它使用可观察的,因此可能更接近角度范例。非常感谢您澄清树中组件之间的关系:(1)传递道具,(2)使用上下文API(3)使用诸如redux或mobxI之类的共享存储解决方案想要共享我们所有组件的登录详细信息,在angular7中,我们这里有服务最佳方式,在react 16中,哪一种是最佳方式。请帮我谢谢Advanced我们只是在使用服务-这只是其中一种方式。另一种方式是通过共同的父母沟通。这是你在React中通常使用的方式。另一种方法是通过全局状态Redux或上下文API进行通信。React只是视图层,由您自己决定。最流行的解决方案是
redux
+
react redux
软件包,有很多关于这方面的教程,对于新手来说,设置和习惯有点棘手。另外,
mobx
+
mobx react
可能是第二流行的,它使用的是可观测的,所以可能更接近角度的范例。非常感谢你的澄清谢谢你这么多,谢谢你,谢谢你
import React, {Component} from 'react';
class Parent extends Component {
    constructor() {
      super()
      this.state = {
       name: "John Doe"
      }
      this.changeName = this.changeName.bind(this)
    }
   changeName(newName) {
     this.setState({
       name: newName
     })
   }

    render() {
       return (
           <div>
               // passing data from parent component to child component using props
               // name={this.state.name} changeName={this.changeName}
               <Child name={this.state.name} changeName={this.changeName} />
               <SecondChild name={this.state.name} />
           </div>
         )

      }
 }

 function Child(props) {
   return (
      <div>
         <h1>My name in Child Component is: {props.name} </h1>
         // passing data from child component to parent component using Callback
         // onClick={() => props.changeName('Jeremy Smith')}
         <button onClick={() => props.changeName('Jeremy Smith')}>Change Name</button>
         // when button is clicked "Jeremy Smith" is passed to parent component and 
         // from their passed to both Child and SecondChild components
         // this way we communicate between two child components
      </div>
    )
 }

 function SecondChild(props) {
   return <h1>My Name in Second Child Component is: {props.name}</h1> 
 }