初用 react 容易踩的坑

发布于 2022-03-14 15:15:18 字数 1509 浏览 985 评论 0

自定义组件忘记大写第一个字母

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文