React组件简单介绍
组件是 React 的核心,因此了解如何利用它们对于创建优秀的设计结构至关重要。
组件之间传递信息方式:
1.(父组件)向(子组件)传递信息
2.(子组件)向(父组件)传递信息
3.没有任何嵌套关系的组件之间传值(比如:兄弟组件之间传值)
下面结合实例详细说明种传递信息的方式。
以下的例子是我的个人见解,希望对你们有所帮助。
一、(父组件)向(子组件)传递信息>>>主要是通过prop进行
来看下面例子
//父组件
var MyContainer = React.createClass({
getInitialState: function () {
return {
checked: false
};
},
render: function() {
return (
<ToggleButton text="Toggle me" checked={this.state.checked} />
);
}
}); // 子组件
var ToggleButton = React.createClass({
render: function () {
// 从(父组件)获取的值
var checked = this.props.checked,
text = this.props.text; return (
<label>{text}: <input type="checkbox" checked={checked} /></label>
);
}
});
以上这个例子,子组件通过 prop拿到了text值以及checked的属性值;那么当子组件要拿到祖父级组件的信息,也是可以通过prop进行逐层的获取。
二、(子组件)向(父组件)传递信息
// 父组件
var MyContainer = React.createClass({
getInitialState: function () {
return {
checked: false
};
},
onChildChanged: function (newState) {
this.setState({
checked: newState
});
},
render: function() {
var isChecked = this.state.checked ? 'yes' : 'no';
return (
<div>
<div>Are you checked: {isChecked}</div>
<ToggleButton text="Toggle me"
initialChecked={this.state.checked}
callbackParent={this.onChildChanged}
/>
</div>
);
}
}); // 子组件
var ToggleButton = React.createClass({
getInitialState: function () {
return {
checked: this.props.initialChecked
};
},
onTextChange: function () {
var newState = !this.state.checked;
this.setState({
checked: newState
}); //这里将子组件的信息传递给了父组件
this.props.callbackParent(newState);
},
render: function () {
// 从(父组件)获取的值
var text = this.props.text;
// 组件自身的状态数据
var checked = this.state.checked;
//onchange 事件用于单选框与复选框改变后触发的事件。
return (
<label>{text}: <input type="checkbox" checked={checked} onChange={this.onTextChange} /></label>
);
}
});
以上例子中,在父组件绑定callbackParent={this.onChildChanged},在子组件利用this.props.callbackParent(newState),触发了父级的的this.onChildChanged方法,进而将子组件的数据(newState)传递到了父组件。
这样做其实是依赖 props 来传递事件的引用,并通过回调的方式来实现的。
三、没有任何嵌套关系的组件之间传值(比如:兄弟组件之间传值)
// 兄弟相传
//1.引入React模块
import React from 'react';
import Son1 from './Son1';
import Son2 from './Son2';
//2.声明类,要继承React.Component
class Father extends React.Component{
constructor(){
super();
this.state={
message:""
}
}
// 这个函数用来接收Son1.js组件的数据函数
Son1data(msg){
this.setState({
message:msg,
})
}
//3.重写渲染方法
render(){
return(
<React.Fragment>
<Son1 Son1data={this.Son1data.bind(this)} ></Son1>
<Son2 mess={this.state.message}></Son2>
</React.Fragment>
)
}
}
//4.向外暴露
export default Father;
//子组件1的js代码
//1.引入React模块
import React from 'react';
// Son1子组件
//2.声明类,要继承React.Component
class Son1 extends React.Component{
//按钮点击事件函数
Son1click(){
this.props.Son1data('这是从Son.js中生成的数据');
}
//3.重写渲染方法
render(){
return(
<React.Fragment>
<button onClick={this.Son1click.bind(this)}>Son1.js数组中获取的数据</button>
</React.Fragment>
)
}
}
//4.向外暴露
export default Son1;
//子组件2的js代码
//1.引入React模块
import React from 'react';
//2.声明类,要继承React.Component
class Son2 extends React.Component{
//3.重写渲染方法
render(){
return(
<React.Fragment>
{this.props.mess}
{console.log(this.props.mess)}
</React.Fragment>
)
}
}
//4.向外暴露
export default Son2;
props都有什么用
1.1.props属性
- 先在组件上通过自定义属性赋值。
- 函数组件中,在函数上定义形参props,在函数中 props.属性名。
- 类组件中,通过 this.props.属性名。
1.2.props的作用
- 用于组件之间传值。
1.3.props的特点
- 只读,值不能被修改。
总结
1.父组件通过state向子组件传值,子组件通过props获取父组件所传的值。
2.子组件通过prop获取父组件中定义的函数方法,但是需要在父组件调用子组件的标签中写明。
3.父组件通过refs调用子组件中声明的方法,但是需要给子组件添加一个ref节点
4.组件之间的交流也不一定要沉在这些直接性的关联的东西,我们的思维还可以提神一个高度,可以在action-reduce中搞定。
React组件简单介绍的更多相关文章
- 学习笔记-React的简单介绍&工作原理
一.React简单介绍 1.React起源于Facebook内部项目,与2013年5月 2.是一个用于构建用户界面的JavaScript库 二.React特点 1.声明式设计-React采用声明范式, ...
- Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍
一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...
- React组件详细介绍及其生命周期函数
组件的详细说明 通过Reac.createClass({...})创建组件的时候,应该有一个render()方法,也可以在其中添加生命周期函数. render方法 当调用该方法的时候,会检测this. ...
- client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法
[本文源址:http://blog.csdn.net/q1056843325/article/details/54729657 转载请加入该地址] 明天就是除夕了 预祝大家新春快乐 [ ]~( ̄▽ ̄) ...
- React 简单介绍
React 简单介绍 作者 RK_CODER 关注 2014.12.10 17:37* 字数 2516 阅读 55715评论 6喜欢 70 why React? React是Facebook开发的一款 ...
- 【Facebook的UI开发框架React入门之八】Image的使用简单介绍(iOS平台)-goodmao
--------------------------------------------------------------------------------------------------- ...
- 【Facebook的UI开发框架React入门之九】button简单介绍(iOS平台)-goodmao
--------------------------------------------------------------------------------------------------- ...
- webpack 打包一个简单react组件
安装Webpack,并加载一个简单的React组件 全局的npm模块安装: npm install -g webpack 安装jsx-loader npm install --save-dev jsx ...
- React 组件间通信介绍
React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍: 父组件向子 ...
随机推荐
- SVN版本更新自动通知提醒
当其他用户提交后,如何提示我及时更新代码或版本? 一般情况下,代码的更新时间节点在每天工作开始或有重大功能提交时,所以,不是所有人都对此功能有需求,最好的方式是使用客户端"SVN项目监视器& ...
- Nor Flash的理论性能
简介 为了评估Nor性能优化空间,我需要根据Spec计算出极限情况下,Nor Flash的性能理论值. 在全志的R**相关项目中分别支持ESMT.MXIC.Winbond.GD这4个厂家的Nor Fl ...
- R语言填充空缺值
在R语言中, imputeMissings包的特点是,如果空值是数值型,则使用median代替,如果使用的是character类型,则使用mode值代替. imputeMissing中,需要的包是im ...
- 明解C语言 中级篇 第四章答案
练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include ...
- C++:Name Lookup & Best Match
名字查找 每当一个变量或者一个对象出现,编译器都会进行名字查找(name lookup),以确认这个变量或对象的具体属性.一般情况下,程序会从变量出现的地方开始向上查找,由内向外查找各级作用域直到全局 ...
- Go命令行—compile
常用作编译命令行指定的单个go源码包.会生成一个以文件.o为后缀的目标文件,其文件名与包内第一个源文件的文件名相同. 目标文件可以与其他对象组合成一个包档案或直接传递给链接器(go tool link ...
- 记录一个终端入网小助手的bug
背景:技术leader拿到一台超薄笔记本,系统标准化安装,笔记本一开机风扇嗡嗡响,键盘也开始发烫,资源占用排名前三的进程都是终端管理软件,一下子就找上门了.处理:进程分析发现异常,卸载入网小助手后恢复 ...
- sklearn 学习 第一篇:分类
分类属于监督学习算法,是指根据已有的数据和标签(分类)进行学习,预测未知数据的标签.分类问题的目标是预测数据的类别标签(class label),可以把分类问题划分为二分类和多分类问题.二分类是指在两 ...
- ArcGIS随机数生成
arcgis python 随机数 语法用法一例: //--------------------------------------------- //定义函数getnums 返回一个随机数(0,5 ...
- C#获取文件夹下所有的文件名称
例如想获取后缀名为.txt的文件 //第一种方法 var files = Directory.GetFiles(path, "*.txt"); foreach (var file ...