初用 react 容易踩的坑
自定义组件忘记大写第一个字母
var myComp = React.createClass({ render: function() { return <div>Hello world</div>; } }); ReactDOM.render(<myComp />, mountNode);
如上代码则不会渲染出组件,因为自定义组件的第一个字母必须要大写
在组件上传递 onClick 等特殊属性
接着上面的例子,把myComp改成MyComp,此时又容易写出如下代码
<MyComp onClick={func}/>
没做其他处理的话,点击该组件是不会生效的,因为自定义组件中的所有属性都只会作为一个一般的属性去处理,需要在组件内部把该属性进行处理才会生效,即
var MyComp = React.createClass({ render: function() { return <div onClick={this.props.onClick}>Hello world</div>; } }); ReactDOM.render(<MyComp onClick={func} />, mountNode);
其他className、htmlFor等属性也类似处理
滥用 this.func.bind
利用React.createClass
创建的组件中,事件的调用函数是不需要加上.bind(this)的,除非要传参数
var MyComp = React.createClass({ func:function(){ //do Something }, render: function() { return <div onClick={this.func.onClick}>Hello world</div>; } });
如果是用ES6的写法,则需要
直接给 input value 设置一个 state
<input value={this.state.text} />
如果像上面这样写,则input是不可修改的,有两种解决方案。
如果是要一次性设置一个值,用defaultValue
,如果是要双向绑定,则可以用ReactLink
,具体官方都有连接
defaultValue : https://facebook.github.io/react/docs/forms.html
ReactLink : http://facebook.github.io/react/docs/two-way-binding-helpers.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 为 git 添加 ssh 方式提交
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论