浅谈React 属性和状态的一些总结
一、属性
1、第一种使用方法:键值对
<ClaaNameAname=“Tom”/>
<ClaaNameAname={Tom}/>
<ClaaNameAname={“Tom”}/>
<ClaaNameAname={[1,2,3]}/>//数组
<ClaaNameAname={FunctionNAme}/>//定义一个函数
2、第二种方法:三个点的展开对象形式
varprops={
one:”123”,
tow:321
}
<ClassNameB{…props}/>
增加三个引号相当于这里面拿到两个属性了(one和two)
3、setProps形式:通过组件更新属性,不能在组件内部中修改属性的,因为会违背组件设计原则(尽量避免)
varinstance=React.render(<ClassNameC><ClaasNameC/>,document.body);
instance.setProps({name:”Tom"});
二、状态:事物所处的状况,由事物自行处理不断变化/事物的私有属性
getInitialState:初始化每个实例特有的状态
setState:更新组件状态
setState会触发diff算法:判断state和页面结果的区别,是否需要更新
三、状态和属性对比
状态和属性都会触发render更新,都是纯JS对象
状态:是和自己相关的,既不受父组件也不受子组件影响
属性:本身是不能自己去修改的,只能从父组件获取属性,父组件也能修改它的属性
根本的区别:组件在运行时需要去修改维护的就是状态
四、简单的demo熟悉一下:
<!DOCTYPEhtml>
2<html>
3<head>
4<metahttp-equiv='Content-type'content='text/html;charset=utf-8'>
5<title>daomul'sexample</title>
6<linkrel="stylesheet"href="../shared/css/base.css"/>
7</head>
8<body>
9<h1>Textdemo</h1>
<divid="container">
</div>
<scriptsrc="../shared/thirdparty/es5-shim.min.js"></script>
<scriptsrc="../shared/thirdparty/es5-sham.min.js"></script>
<scriptsrc="../shared/thirdparty/console-polyfill.js"></script>
<scriptsrc="../../build/react.js"></script>
<scriptsrc="../../build/JSXTransformer.js"></script>
<scripttype="text/jsx">
//内容组件
varContent=React.createClass({
getInitialState:function(){
return{
inputText:'',
};
},
handleChange:function(event){
this.setState({inputText:event.target.value});
},
handleClick:function(){
console.log("propsnameis"+this.props.selectName+"\nandinputTextis"+this.state.inputText);
},
render:function(){
return<div>
<textareaonChange={this.handleChange}placeholder="pleaseinputsomething!"></textarea>
<buttononClick={this.handleClick}>sumbit</button>
</div>;
},
});
//评论组件
varComment=React.createClass({
getInitialState:function(){
return{
names:["Tom","Axiba","daomul"],
selectName:'',
};
},
handleSelect:function(){
this.setState(
{selectName:event.target.value}
);
},
render:function(){
varoptions=[];
//往options中添加子option
for(varoptioninthis.state.names){
options.push(<optionvalue={this.state.names[option]}>{this.state.names[option]}</option>)
};
return<div>
<ContentselectName={this.state.selectName}>
</Content>
<selectonChange={this.handleSelect}>
{options}
</select>
</div>;
},
});
//startrender
React.render(<Comment></Comment>,document.body);
</script>
</body>
</html>
以上这篇浅谈React属性和状态的一些总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。