您的位置:首页 > Web前端 > React

ReactJs的一些记录

2015-12-21 11:07 260 查看
1、基础资料

官方英文版

简体中文版(此版本落后于英文版)

ReactJs.NET(在ASP.NET中自动将jsx编译成js)

2、其它资料

组件间通讯

ReactJs兼容IE8

3、IDE工具

VS2015开始才支持ReactJs,所以如果没VS2015的话,可以使用Sublime Text,相关工具及插件资料

4、相关问题点补充

a)ReactJs相关js文件的加载顺序:react.js、react-with-addons.js、react-dom.js,顺序不对会导致部分功能错误

b)在360等浏览器中,需指定<meta name="renderer" content="webkit">以解决浏览器中不显示的问题

c)兼容IE8,除了要引入js之外,还需要增加<meta http-equiv="X-UA-Compatible" content="IE=edge">,这样在IE7也可以显示ReactJs运行结果

d)map会导致ReactJs的事件传递失败,需通过数组组织的方式才能正确传递

//CheckBox是自定义的一个ReactJs组件,在这里callBack事件不会被传递到组件里,但属性value可以
render:function(){
return(<div>
this.props.data.map(function(d){
return <CheckBox type="text" value={d.value} callBack={this.handleChanged}/>
})</div>
)
}
//下面这种通过数组的方式事件才会被传递
render:function(){
var arr=[];
for(var i=0;i<this.props.data.length;i++){
var d= this.props.data[i];
arr.push(<CheckBox key={d.value} value={d.value} text={d.text} checked={this.state.checkedItems[d.value]} callBack={this.handleChanged} />);
}
return(
<div>{arr}</div>
)
}

e)在render的return方法内,只能有一个根节点,这与xml一致,如上面的<div>包含arr,至于为什么只要看下最终生成的js就知道了,这点可能没有任何文章提到过,估计也就我一个笨蛋会有这种问题吧……

f)可以通过设置ref,然后组件内通过this.refs.xxx来获取对应的组件,这里需要注意:如果你是在react组件上设置了ref属性,那么获取的就是你创建的reactElement,你可以调用它的各种方法;如果你是在原生html标签上设置了ref属性,那么获取的就是这个原生html标签,你可以通过它来操作dom,但这里还有些东西需要注意,因为reactjs展示的内容必须通过setState方法才会更新界面部分,所以就算你通过某种方式更改了dom的某些展示,但如果你没有调用setState方法,那么你下一次触发组件时,相关变动会被重置

g)setState有两个参数,第一个为要更新的data,第二个为callBack,如果某些后续操作需要在setState结束之后触发,那么可以写入到callBack事件里

h)待补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: