博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正确使用react的refs/props/state及其它
阅读量:4086 次
发布时间:2019-05-25

本文共 1172 字,大约阅读时间需要 3 分钟。

正确使用refs

很多人写refs是这么写的(代码仅作演示)http://www.jianshu.com/p/193c34e5eeeb

let Progress = React.createClass({    show: function(){        this.refs.modal.show();    },    render: function() {        return (           
); }});

但实际上这种写法已不建议使用,正确的写法应该如下:

let Progress = React.createClass({    show: function(){        this.modal.show();//注意这儿的this.refs.modal已被替换成this.modal    },    render: function() {        return (           
{ this.modal=com } }/> ); }});

官方不建议滥用refs,所以上面的代码其实还可以做优化,用props去更新ProgressFormModal的显示状态

正确使用props和state

很多人都知道不能直接修改state的状态

this.state.comment = 'Hello';//不正确的更新

但对于props和state还是有不少误用,很多人没有意识到props和state可能是异步的,比如:

//可能失败this.setState({  counter: this.state.counter + this.props.increment,});

正确的用法是

this.setState((prevState, props) => ({  counter: prevState.counter + props.increment}));

另外setState可能不会立即修改this.state,如果你在setState之后立马使用this.state去取值可能返回的是旧的值。setState这个方法其实可以接收两个参数,如下形式:

setState(nextState, callback)

它接收一个callback,它状态得到更新后,会执行这个callback,不过更推荐在componentDidUpdate中调用相关逻辑

避免产生新的闭包

在子组件中,我们要避免以下写法

 { model.name = e.target.value }}            placeholder="Your Name"/>

应该这么写

这样可以避免每次父组件重新渲染的时候,创建新的函数

转载地址:http://bseni.baihongyu.com/

你可能感兴趣的文章
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
Flex4的可视化显示对象
查看>>
Flex:自定义滚动条样式/隐藏上下箭头
查看>>
烈焰SWF解密
查看>>
Qt 静态编译后的exe太大, 可以这样压缩.
查看>>
3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇
查看>>
乘法逆元
查看>>
STL源码分析----神奇的 list 的 sort 算法实现
查看>>
Linux下用math.h头文件
查看>>
Linux中用st_mode判断文件类型
查看>>
Ubuntu修改host遇到unable to resolve host
查看>>
路由选择算法
查看>>