bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作
bind(): You are binding a component method to the component. React does this for you automatically?
我从reactJS.NET 收到此警告
bind():您正在将一个组件方法绑定到该组件。反应以高性能的方式自动为您执行此操作,因此您可以安全地删除此调用。参见LikeCon
组件看起来像这个
var LikeCon = React.createClass({
handleClick: function() {
var data = new FormData();
var like = !this.state.like;
var likeCounter = this.state.likeCount;
data.append("catgoryType", this.state.categoryKey);
data.append("objectId", this.state.objectId);
data.append("like", like);
if(like)
likeCounter++;
else
likeCounter--;
this.setState({ like: like, likeCount: likeCounter, userId: this.state.userId, categoryKey: this.state.categoryKey, objectId: this.state.objectId});
var xhr = new XMLHttpRequest();
xhr.open("post", "http://localhost:2215/Home/SetLike", true);
xhr.onload = function() {
};
xhr.send(data);
},
getInitialState: function() {
return { like: this.props.initialLike, likeCount: this.props.initialLikeCount, userId: this.props.userId, categoryKey: this.props.categoryKey, objectId: this.props.objectId };
},
render(){
return this.renderLikeButton()
},
renderLikeButton(){
return (
content =
<div className="likeCon">
<div className={this.state.like==true ? "likeButConAct" : "likeButCon"}>
<div className="likeB" title={this.state.like==true ? "Unlike" : "Like"} onClick={this.handleClick.bind(this)} >
</div>
{ this.state.likeCount > 0 ? <div className="likeCount">{this.state.likeCount}</div>: null}
</div>
</div>
);
}
})
我在调用handleClick方法时使用了绑定,如果我删除它,我会得到另一个异常吗?那我该怎么办呢?
改为传递*.bind(null,this)
;
有关解释,请参阅此Google群组线程。
react会在方法调用时自动将方法绑定到此。这很有帮助,因为它允许您直接传递函数。因此为了避免该消息只通过CCD_ 2而不是CCD_。参考:自动绑定
在我的情况下,以前我有
<input placeholder="URL" id="txt_url" className="form-control"
value={this.state.url} onChange={this.handleChange.bind(this)}/>
删除.bind
调用解决了
<input placeholder="URL" id="txt_url" className="form-control"
value={this.state.url} onChange={this.handleChange}/>
删除"content="或创建包装div:
<div> content =
<div className="likeCon">
<div className={this.state.like==true ? "likeButConAct" : "likeButCon"}>
<div className="likeB" title={this.state.like==true ? "Unlike" : "Like"} onClick={this.handleClick.bind(this)} >
</div>
{ this.state.likeCount > 0 ? <div className="likeCount">{this.state.likeCount}</div>: null}
</div>
</div>
</div>
在返回的HTML中需要一个根元素。
由于v0.4 React autoBind为您提供。看见https://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html所以你不需要绑定你自己的
您应该了解bind
的目标,我将在这里进行解释。
首先,试着想想谁会调用handleClick?也就是说,应该有一些像xxx.handleClick
、xxx
这样的代码真的很重要,因为当你在handleClick
中调用this.setState
时,this
指的是xxx
,而setState
只存在于React component
中,所以xxx
应该指component
来实现你想要的,这就是为什么.bind(this)
到handleClick
,以便在null
0 中设置this
到React Component
现在,回到我的第一个问题,如果你没有明确地设置this
,什么是xxx
,在简单的javascript中,onClick
回调是全局的,这意味着没有xxx
,所以如果我是正确的,this
应该引用全局对象,即window
。然而,React
以一种神奇的方式将xxx
设置为React Component
,这就是为什么您不需要显式地将其设置为
- React重新渲染但未显示正确的组件
- React组件等待所需道具进行渲染
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- react组件中的绑定方法
- 如何在react js中移动第二个组件
- 如何在react路由器的组件中使用参数
- React+Redux性能优化与组件ShouldUpdate
- React-将jSON数据传递给子组件的子组件
- React js更改状态不会更新组件
- 加载服务器端渲染的React组件后执行脚本
- React ClickDrag子组件回调
- 如何在渲染函数中检查 react 中子组件的状态
- 以最封装的方式封装/封装ScalaJS react js组件(react stick)
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作
- 如何将值从父组件传递到子组件(react)
- 将函数从HOC传递到组件(React, React native)
- 根据屏幕大小以不同的顺序呈现组件(React)