结合使用带有ReactJS的ES5开发,可以将组件描述如下:
var MyComponent = React.createClass({
alertSomething: function(event) {
alert(event.target);
},
render: function() {
return (
<button onClick={this.alertSomething}>Click Me!</button>
);
}
});
ReactDOM.render(<MyComponent />);
在此的示例this
引用对象本身,这是预期的自然行为。
题
我的问题是:
如何使用ES6创建组件?
class MyComponent extends React.Component {
constructor(props) {
super(props);
}
alertSomething(event) {
alert(event.target);
}
render() {
return (
<button onClick={this.alertSomething.bind(this)}>Click Me!</button>
);
}
}
ReactDOM.render(<MyComponent />);
知道在JavaScript中this
使用new运算符时会引用实例化对象本身,因此有人可以告诉我使用bind的真正目的是什么?这和React的内部机制有关吗?
bind
只是核心javascript。这是绑定事件的工作方式。这不是一个React概念。
以下文章对此进行了很好的解释。
JavaScript中的有界函数是绑定到给定上下文的函数。这意味着无论您如何调用,调用的上下文都将保持不变。
要在常规函数之外创建有界函数,请使用bind方法。bind方法将要绑定函数的上下文作为第一个参数。其余参数是将始终传递给该函数的参数。结果返回一个有界函数。
http://reactkungfu.com/2015/07/why-and-how-to-bind-methods-in-your-react-
component-classes/
另外,顺便提一下,您应该在构造函数中而不是在render方法中进行所有事件绑定。这将防止多次绑定调用。
这是有关该主题的另一条很好的信息。他们说:
我们建议您将事件处理程序绑定到构造函数中,这样对于每个实例它们都只绑定一次
https://facebook.github.io/react/docs/reusable-
components.html
问题内容: 即使等待1的linux手册页很好地说明了您需要让子进程不使其变成僵尸,但它根本无法说明原因。 我围绕一个Ever 循环计划了我的程序(这是我的第一个多线程程序,所以请原谅我的天真),该循环启动子进程,该子进程被ed淘汰,并确保自行终止。 我无法使用,因为这使并行计算变得不可能,因此我可能不得不添加一个存储子pid的进程表,并且不得不使用-不是立即执行,而是经过一段时间- 这是一个问题,
关于在最新版本的GCC和Clang中编译有几个问题:实验::filessystems链接器错误 但是现在< code>filesystem已经被c 17接受,所以不再需要< code>experimental或< code>-lstdc fs标志,对吗? 错了,我甚至不能 只给了我< code >实验版本,我怎么能包括正式接受的版本呢?
问题内容: 我意识到我编写的所有组件都不使用。 我倾向于按照官方文档在https://facebook.github.io/react/docs/multiple- components.html 顶部声明的方式来编写组件。 正在像这样嵌套组件… …对像这样组成它们有益吗?: A.js 假设这是正确的术语,我想念的是什么? 问题答案: 在我的应用程序中,我很少使用this.props.childr
问题内容: 每个人都告诉我“使用super.viewDidLoad()因为它就是这样”或“我一直那样做,所以要保留它”,“如果不叫super就是错误的”等。 我只发现了一些有关Objective-C用例的主题,这些主题并没有那么启发性,但是我正在Swift 3中进行开发,所以有什么专家可以给我一个很好的详细解释吗? 这是一种良好实践的案例还是有任何隐藏的影响? 问题答案: 通常,最好为您覆盖的所有
本文向大家介绍为什么必须使用Twitter进行联网,包括了为什么必须使用Twitter进行联网的使用技巧和注意事项,需要的朋友参考一下 如果我们能够在线开发有价值的业务网络,那真是太棒了? 是的,通过“ Twitter”可以实现–实时通信枢纽成为一个出色的业务网络平台。通过在这种快节奏的环境中改进和实施我们的社交网络技能,Twitter可以用作构建强大的业务网络的起点。 对于Twitter的网络,
问题内容: 我是ReactJS的新手,并安装了node.js和babel。我不清楚为什么我们在react中使用node.js和babel。 问题答案: 有多种方法可以开始使用React.js库。虽然,最方便的方法是使用Babel + Webpack。 React使用JSX语法。Babel是一个编译器,即它将JSX转换为原始JavaScript。您可以将babel视为代码和“可执行”代码之间的中间步