1. 속성
1. 첫 번째 사용 방법: 키-값 쌍
< ;ClaaNameA 이름 = {Tom} />
2. 두 번째 방법: 3점 확장 객체 형식
var props = { one :”123”, tow :321 } <ClassNameB {…props} />
3개의 따옴표를 추가하는 것은 두 개의 속성(1개와 2개)을 얻는 것과 같습니다.
3. setProps 형식: 구성 요소를 통해 속성을 업데이트합니다. .컴포넌트 내부의 속성은 컴포넌트 설계 원칙에 위배되므로 수정할 수 없습니다. (피하십시오)
var instance =React.render(<ClassNameC ><ClaasNameC/>,document.body); instance.setProps({name:”Tom" });
2. Status: 상태 사물은 지속적으로 변경됩니다/사물의 개인 속성은 사물 자체에 의해 처리됩니다
getInitialState: 각 인스턴스의 고유 상태 초기화
setState: 구성 요소 상태 업데이트
setState diff 알고리즘을 트리거합니다. 상태와 페이지 결과 간의 차이, 업데이트가 필요한지 여부를 결정합니다.
3. 상태와 속성의 비교
상태와 속성 모두 렌더링 업데이트를 트리거합니다. 순수 JS 객체입니다.
상태: 자신과 관련되어 있으며 상위 구성 요소나 하위 구성 요소의 영향을 받지 않습니다.
속성: 자체적으로는 수정할 수 없습니다. 상위 구성 요소에서 생성되며 상위 구성 요소도 해당 속성을 수정할 수 있습니다
근본적인 차이점: 구성 요소가 실행 중일 때 수정하고 유지 관리해야 하는 것은 상태입니다
4. 익숙해지기 간단한 데모:
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-type' content='text/html; charset=utf-8'> <title>daomul's example</title> <link rel="stylesheet" href="../shared/css/base.css" /> </head> <body> <h1>Text demo</h1> <div id="container"> </div> <script src="../shared/thirdparty/es5-shim.min.js"></script> <script src="../shared/thirdparty/es5-sham.min.js"></script> <script src="../shared/thirdparty/console-polyfill.js"></script> <script src="../../build/react.js"></script> <script src="../../build/JSXTransformer.js"></script> <script type="text/jsx"> //内容组件 var Content = React.createClass({ getInitialState:function(){ return { inputText:'', }; }, handleChange:function(event){ this.setState({inputText:event.target.value}); }, handleClick:function(){ console.log("props name is " + this.props.selectName + " \n and inputText is " + this.state.inputText); }, render:function(){ return <div> <textarea onChange = {this.handleChange} placeholder = "please input something!"></textarea> <button onClick = {this.handleClick}>sumbit</button> </div>; }, }); //评论组件 var Comment = React.createClass({ getInitialState:function(){ return { names:["Tom","Axiba","daomul"], selectName:'', }; }, handleSelect:function(){ this.setState( {selectName : event.target.value} ); }, render:function(){ var options = []; //往options中添加子option for (var option in this.state.names) { options.push(<option value={this.state.names[option]}> {this.state.names[option]} </option>) }; return <div> <Content selectName = {this.state.selectName}> </Content> <select onChange = {this.handleSelect}> {options} </select> </div>; }, }); //start render React.render(<Comment></Comment>,document.body); </script> </body> </html>