static:是组件类的静态方法的集合,能在组件创建前后调用,属于组件类成员;
注意:
1)在静态方法中不能访问实例成分(props,state等),若要访问,则要将实例成员以参数的形式传入静态方法中;
2)定义在组件类中;
调用:
(组件外):组件类.静态方法;
(组件内):有两种方式,一是组件类.静态方法;二是this.constructor.静态方法;
异步数据:
客户端:由于在客户端中可以接受传来的数据有延迟(就是异步请求返回的数据);
服务端:由于数据加载进来需要时间,但渲染函数是同步的,即渲染函数不会因为请求的数据有延迟而停止渲染组件,所以在服务端组件的生命方法不能接受异步数据;
服务端处理异步数据方法:
1)在组件中定义静态方法;
2)在静态方法中获取异步数据,并将异步数据移到组件中渲染;
3)将已渲染组件挂载到html视图模板中;
4)将模板,数据返回到浏览器;
5)在生命方法中监听组件的变化,随时更新组件内容;
eg:
var Inss=React.createClass({ getDefaultProps:function(){ return{ name:"english" } }, statics:{ //setState在外部定义是用来接受异步数据,整合到props,然后渲染组件; //在内部运用时用来设置内部的state状态值 getConsole:function(prop,setState){ setState({sun:"win",son:"won"}); } }, componentWillMount:function(){ this.constructor.getConsole(); }, componentDidMount:function(){ }, running:function(){ this.constructor.getConsole(this.props,this.setState); }, render:function(){ return( <div ></div> ) } }); var user={age:10}; Inss.getConsole(user,function(obj){ user["objs"]=obj;
//渲染函数 var go=React.renderToString(<Inss user={user}></Inss>); $("#ten").html(go); //console.log(user); });
//组件外部定义setState参数的函数体(以上是jsx语法,时间冲突,可能会有些不太严谨,大致意思是这样)