React.js笔记

前端之家收集整理的这篇文章主要介绍了React.js笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

目录
1创建第一个组件
2 组件嵌套
3 组件的状态
4 组件的通信
5 Ref指向
6 单向数据流
7 React组件生命周期
注:使用了 React 的版本为 15.4.2,你可以在官网http://facebook.github.io/react/下载最新版。
1创建第一个组件
1.1 花括号{}
花括号{}解析表达式,三元表达式
花括号{}不能出现在Return的第一层
//1 创建第一个组件
var MessageComponent=React.createClass({
render:function(){
//告诉React要渲染的内容
return(
<div>
{/*花括号不能出现在return第一层,故用div包起来*/}
{false?<div style={style}>上海大众</div>:<div>Little_Gao</div>}
</div>
);
}
});
1.2 样式
方法一:组件中使用变量
var style={
background:'wheat'
};
<div style={style}>上海大众</div>
方法二:外部样式,组件中使用className
<style>
.app{
background: coral;
</style>
<div className="app">上海大众</div>
方法三:渲染组件时,外面包一层
//变量、className
<div style={style}><MessageComponent/></div>
<div className="app"><MessageComponent/></div>
2 组件 嵌套
<div id="container"></div>
<script type="text/babel">
//第一个组件
var Hello=React.createClass({
//组件嵌套
<div>欢迎来到-<Company/></div>
});
//第二个组件
var Company=React.createClass({
<span>上海大众</span>
//渲染组件
ReactDOM.render(
<Hello/>,
document.getElementById('container'),51)">function(){
console.log('渲染完成');
</script>
3 组件的状态
/*
* 组件状态 state
* 每一次state值改变,都会重新执行render方法,来进行渲染
* diff算法,会来计算哪里发生改变,只重新渲染改变的地方
* */
//创建组件
var Message=React.createClass({
//初始化state
getInitialState:function(){
return({
name:'同济大学'
},51)">changeState:function(){
this.setState({
name:'上海交通大学'
//获得state内的值
<div onClick={this.changeState}>欢迎来到—{this.state.name}</div>
<Message/>,0)">4 组件的通信
——利用state & props
/**
* 组件通讯 props
* 大多数情况下是父组件向子组件通讯的
//父组件
var Parent=React.createClass({
changeText:function(){
alert("我被子组件调用了");
//父组件向子组件传name
//子组件调用父组件方法,给子组件添加自定义属性changeText
<div>父组件接受到了:{this.props.name}--><Child changeText={this.changeText} name="斯柯达"/></div>
//子组件
var Child=React.createClass({
<span onClick={this.props.changeText}>子组件接收到了:{this.props.name}</span>
//渲染过程 向父组件传name
<Parent name="上海大众"/>,0)">5 Ref指向
handleClick:function(){
//方法
console.log('方法一:'+this.refs.input.value);
//方法
console.log("方法二:"+this.refs['input'].value)
//return多个标签时,需要用<div>将它们包起来
<input type="text" ref="input"/>
<button onClick={this.handleClick}>点击获取input值</button>
6 单向数据流
.div{
border: 1px solid royalblue;
width: 200px;
height: 100px;
margin-top: 20px;
padding: 10px;
</style>
//input组件
inputContent:''
//设置state
handleChange:function(event){
inputContent:event.target.value
<input onChange={this.handleChange} type="text" />
<Show content={this.state.inputContent}/>
//show组件
var Show=React.createClass({
<div className="div">{this.props.content}</div>
7 React组件生命周期
7.1 初始化阶段
初始化一些内容和值,将其渲染出来
<div id="container"></div>
<script type="text/babel">
/**
* 组件生命周期
* */
//创建组件
var Message=React.createClass({
getDefaultProps:function(){
console.log('getDefaultProps');
},
getInitialState:function(){
console.log('getInitialState');
return({

});
},
componentWillMount:function(){
console.log('组件将要渲染');
},
componentDidMount:function(){
console.log('组件渲染完成');
},
render:function(){
console.log('渲染');
return(
<div>上海大众</div>
);
}
});
//渲染组件
ReactDOM.render(
<Message/>,
document.getElementById('container'),
function(){
console.log('渲染完成');
}
);
</script>


控制台信息:
getDefaultProps
getInitialState
组件将要渲染
渲染
组件渲染完成
渲染完成
7.2 进行中阶段
更新数据或重新渲染节点
* 组件生命周期
getDefaultProps:function(){
console.log('getDefaultProps');
console.log('getInitialState');
name:'上海大众'
componentWillMount:function(){
console.log('组件将要渲染');
componentDidMount:function(){
console.log('组件渲染完成');
shouldComponentUpdate:function(nextProps,nextState){
console.log(nextState);
console.log('shouldComponentUpdate');
//true更新,false不更新
return true;
componentWillUpdate:function(){
console.log('组件将要被更新');
componentDidUpdate:function(){
console.log('组件更新完毕');
clickEvent:function(){
name:'保时捷'
console.log('渲染');
<div>{this.state.name}</div>
<button onClick={this.clickEvent}>点击改变内容</button>
<Child name={this.state.name}/>
//子组件将要更新属性
componentWillReceiveProps:function(nextProps){
console.log(nextProps);
console.log('componentWillReceiveProps');
<span>{this.props.name}</span>
</script>
点击更新按钮后,父组件将进行更新,父组件中的子组件更新完后,父组件继续更新,父组件更新完毕
渲染完成
Object {name: "保时捷"}//父组件
shouldComponentUpdate//允许组件更新
组件将要被更新
Object {name: "保时捷"}//子组件
componentWillReceiveProps
组件更新完毕
7.3 销毁阶段
componentWillUnmount:function(){
console.log('组件将要销毁');
killComponent:function(){
ReactDOM.unmountComponentAtNode(document.getElementById('container'));
<button onClick={this.killComponent}>销毁组件</button>
</script>
点击销毁控制台信息
组件将要销毁
8 Mixin
——将多个组件中,相同的功能提取出来,复用
原始代码
//Message组件
console.log('Message');
<button onClick={this.clickEvent}>MessageBtn</button>
<Child/>
//Child组件
console.log('Child');
<button onClick={this.clickEvent}>ChildBtn</button>
</script>
Mixin
<div id="container"></div>
<script type="text/babel">
//Mixin
var Fn={
clickEvent:function(data){
console.log(data);
},
}
//Message组件
var Message=React.createClass({
mixins:[Fn],
render:function(){
return(
<div>
<button onClick={()=>this.clickEvent('Message')}>MessageBtn</button>
<Child/>
</div>
);
}
});
//Child组件
var Child=React.createClass({
mixins:[Fn],
render:function(){
return(
<button onClick={()=>this.clickEvent('Child')}>ChildBtn</button>
);
}
});
//渲染组件
ReactDOM.render(
<Message/>,
function(){
console.log('渲染完成');
}
);
</script>
原文链接:https://www.f2er.com/react/303893.html

猜你在找的React相关文章