


源码
//生命周期脚本var HelloMassage = React.createClass({ //设置默认属性 getDefaultProps: function() { console.log("初始化默认的属性"); return { name: "test" } }, //设置默认状态 getInitialState: function() { console.log("初始化状态成功"); return { isLoading: false } }, //组件被挂载之前,Render 之前最后一次修改状态的机会 componentWillMount: function() { //修改状态 this.setState({ isLoading: true }); console.log("组件被挂载之前"); }, //组件被渲染之后 componentDidMount: function() { console.log("组件被真实的渲染到页面中完成"); // console.log(this.refs); // console.log(this.refs.uname); //获取 jquery dom // console.log($(this.refs.uname)); //获取 value // console.log($(this.refs.uname).val()); //修改 css // $(this.refs.uname).css({ // "color": "red" // }); //自动完成(Autocomplete) 单词补充的示例 // var availableTags = [ // "ActionScript", // "AppleScript", // "Asp", // "BASIC", // "C", // "C++", // "Clojure", // "COBOL", // "ColdFusion", // "Erlang", // "Fortran", // "Groovy", // "Haskell", // "Java", // "JavaScript", // "Lisp", // "Perl", // "PHP", // "Python", // "Ruby", // "Scala", // "Scheme" // ]; // $(this.refs.uname).autocomplete({ // source: availableTags // }); //获取 ReactDOM 这个获取到的是一个纯粹的 DOM 节点 console.log(ReactDOM.findDOMNode(this.refs.uname)); }, //不能修改属性和状态 componentWillUpdate: function(data) { console.log("componentWillUpdate", data); }, //可以修改 DOM componentDidUpdate: function(data) { console.log("componentDidUpdate", data); }, //返回 false 会阻止 render 调用 shouldComponentUpdate: function(nextrops) { console.log("shouldComponentUpdate", nextrops); //返回一个 boolean 值 // return false;//false 的话页面就不会更新 return true; }, //父组件修改属性触发,可以修改新属性和方法 componentWillReceiveProps: function(nextrops) { console.log("componentWillReceiveProps", nextrops); }, _change: function(e) { // console.log(e); // console.log(e.target); console.log(e.target.value); }, render: function() { console.log("render 页面"); return ( <div> {/*这里可以获取到父组件传递过来的 name 属性的值*/} <label htmlFor="uname">{this.props.name}</label> {/*<input ref="uname" value={this.props.name} onChange={this._change} type="text"/>*/} <input id="uname" ref="uname" onChange={this._change} type="text"/> <h1>{this.props.name}</h1> {!this.state.isLoading ? <h1>loading...</h1> : <h1>ok</h1>} </div> ) }});//新建一个父组件var HelloWorld = React.createClass({ getInitialState: function() { return { data: "父容器的状态" } }, click: function() { this.setState({ data: "被改变" }) }, render: function() { return ( <form onClick={this.click}> {/*使用父组件标签包裹着子组件 这样就可以通过父组件来给子组件传递一些属性了 */} <HelloMassage name={this.state.data} /> </form> ) }});ReactDOM.render( <HelloWorld name="我是父组件" />, document.getElementById("example"));