网站建设资讯

NEWS

网站建设资讯

React中受控组件与数据共享的示例分析-创新互联

这篇文章主要介绍React中受控组件与数据共享的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

成都创新互联-专业网站定制、快速模板网站建设、高性价比鲤城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式鲤城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖鲤城地区。费用合理售后完善,10年实体公司更值得信赖。

具体如下:

在HTML当中,像,变为开放式标签:

3、select

同理,在React中的

4、利用name处理多个受控组件

如上,我们需要为每个受控组件都设置更新方法onChange,而且每个组件的更新方法都很类似,这样看起来很麻烦,我们可以根据name属性区分不同的组件所对应的state值,利用一个函数来实现多个组件state值的更新:


updateForm(e){
 let name=e.target.name;     //获取组件的name
 let value=e.target.value;    //获取组件的值value
 this.setState({
  [name]:value         //为不同name的组件设置value
 })
}

在setState方法中,通过ES6的语法计算属性[],在中括号中指定要更新的属性名的表达式来更新不同的state。例如当select调用updateForm()时,name="sex",value="male",则通过setState将state.sex值设为male。

5、组件间数据共享

当两个组件要同时使用一个变量时,由于state只能被它所定义的组件修改、访问,因此不能把state赋给某个组件,而应该将state提升至两个组件最近的公共父组件,父组件再通过props将值传递给子组件,这样两个子组件就都可以访问了。那么子组件怎么去修改父组件的state呢?子组件通过props属性来调用父组件的方法从而修改父组件的state,这样两个组件就通过父组件实现了对state的共享。例如父组件Parent的一个子组件ChildInput负责接收用户的输入,保存在state.text中,在另一个子组件ChildShow中显示用户的输入:

class Parent extends React.Component{
 constructor(props){
  super(props);
  this.state={
   text:''
  };
  this.updateText=this.updateText.bind(this);
 }
 updateText(value){
  this.setState({
   text:value
  })
 }
 render(){
  return (
   
     提升state    //父组件updateInput属性指向updateText方法                
  )  } } class ChildInput extends React.Component{  constructor(props){   super(props);   this.handleChange=this.handleChange.bind(this);  }  handleChange(e){    //在子组件的方法中调用父组件的updateInput更新text的值   this.props.updateInput(e.target.value);  }  render(){   return (    
         
  )  } } class ChildShow extends React.Component{  constructor(props){   super(props);    //通过调用父组件构造方法将父组件的props传递给子组件  }  render(){   return (    
     

输入为:{this.props.text}

   
  )  } } ReactDOM.render(  ,  document.getElementById('app') )

运行结果如图:

React中受控组件与数据共享的示例分析

上例在react中的数据流动如下:

1、当在input中中输入内容时,input内容改变onChange触发ChildInput组件的handleChange方法,该方法通过this.props调用父组件updateInput方法并传递输入的内容e.target.value。

2、父组件Parent在引用子组件ChildInput时为其定义updateInput属性为this.updateText方法,因此触发updateText方法,在该方法中接收子组件传递的参数value,并通过setState方法修改state.text的值。

3、当state.text值发生改变时,父组件Parent通过属性props将值传递给子组件ChildInput与ChildShow,引起子组件属性改变,从而子组件重新渲染页面内容。

以上是“React中受控组件与数据共享的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:React中受控组件与数据共享的示例分析-创新互联
链接地址:http://cdweb.net/article/psjsg.html