- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已经使用 React 一段时间了,我已经习惯了必须手动将我的组件方法绑定(bind)到我的组件实例的概念,因为 React 决定“惯用”而不是自动绑定(bind):
Therefore we decided not to have this built-in into React's class model. You can still explicitly prebind methods in your constructor if you want.
class Counter extends React.Component {
constructor() {
super();
this.tick = this.tick.bind(this);
}
tick() {
...
}
...
}- https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html
在这个例子http://jsbin.com/citafaradu/2/edit?js,console,output中我们可以清楚地看到它的效果,来自这个类似的问题:How to properly bind current object context in ES6 using babelify
然而,最近有人问我基于原型(prototype)的类和新的 ES2015 类之间是否有任何区别。直觉上,这个答案应该是强调的“不!”,因为生成的实例对象自然会有正常的原型(prototype)和行为……好吧,就像 JS 对象一样!此外,未绑定(bind)到实例的实例方法有什么用?
我试图寻找任何迹象表明这对 es6 类来说是“idomatically”正确的,但我发现的只是来自 React 开发人员的其他问题,答案如下:
React's ES6 classes have no autobinding. This is documented here: https://facebook.github.io/react/docs/reusable-components.html#no-autobinding
The reason is that javascript's ES6 classes have no autobinding neither[sic]. React tries to not reinvent stuff that is already in javascript. ES5 has no nice syntax for classes, so React had to invent it's own classes. But now with ES6 classes we can just use standard javascript.
- "cody", https://github.com/facebook/react/issues/4065
现在我真的很困惑。这可能是 JSX 转译的一个技巧吗?查看前面示例的渲染方法的输出:
{
key: "render",
value: function render() {
return React.createElement("div",null,
React.createElement("input", {
type: "text", onChange: this.handleBindedChange
}),
React.createElement("br", null),
React.createElement("input", {
type: "text", onChange: this.handleUnbindedChange
}),
React.createElement("br", null),
React.createElement("p",null,"Result: ",this.state.demo)
);
}
}
这里也没有骰子 - babel 输出使用 Object.defineProperty,它会将随它添加的函数绝对绑定(bind)到它们所附加的对象。
所以,我很茫然。我发现的大部分响应都比最终的 es2015 规范更早——因为我在规范本身找不到任何关于它的信息,是否有改变会使 React 团队的方法无效?这是我以某种方式误解的奇怪的转译产物吗? react 是否在幕后做了一些古怪的事情导致了这个?如果是这样,为什么他们会反复声称这样做是为了符合 ES2015 标准?如果不是,是什么导致了第一个示例中出现的行为?
最佳答案
我也有类似的问题。您的类中的方法将能够引用同一类中的其他方法,因为它们属于同一上下文 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)。
此示例表明类中的方法可以访问 this
上的属性,而无需在构造函数中绑定(bind):http://jsbin.com/tapokotahi/1/edit?js,console,output . renderElements
方法未绑定(bind),但正在访问 this.state
。
类方法在传递给事件处理程序时需要绑定(bind)(或定义为箭头函数),因为执行上下文从类的执行上下文更改为事件处理程序的执行上下文。
我同意当我们阅读 React 文档时看起来很困惑,他们告诉我们需要在构造函数中绑定(bind)方法,但这只有在将方法传递给 React 的事件处理程序(例如 onClick
)时才有必要>.
关于javascript - ES2015 类是 "not autobind"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314924/
java中的TCP套接字可用于连接到服务器,而无需手动绑定(bind)。 final Socket socket = SocketChannel.open().socket(); socket.con
我得到了 xsd我从中生成了 JaxB 类(例如 ApplicationCustomType)。某些类具有 xs:any 作为元素。我可以向这些字段添加内容(例如 xs:any)。编码工作良好。 但是
我已经使用 React 一段时间了,我已经习惯了必须手动将我的组件方法绑定(bind)到我的组件实例的概念,因为 React 决定“惯用”而不是自动绑定(bind): Therefore we dec
我是 React 新手,所以如果我错过了,请随时将我重定向到文档。 我正在尝试按照 React 教程使用 onClick 方法触发 Ajax 调用。相关代码如下。 doSomething: funct
我正在评估 kendo ui,以便在我们的大型应用程序中使用。我们有这样一种情况,我们在下拉列表中有很多值(比如 200+),并且有超过 1 个具有该大小的下拉列表。所以如果我们有一个复杂的形式。页面
获取此未捕获类型错误:尝试在函数中设置状态时无法读取未定义的属性“setState”。我知道已经发布了其他类似的问题,但没有一个使用 react-autobind 当我像这样在构造函数中绑定(bind
我正在使用 Typescript,我想在项目中导入“autobind-decorator”包,但我卡在了这里。 我在编译时收到此错误行: cannot find declaration file fo
我正在尝试利用 vertx-jersey创建一个 Web 服务,我可以在其中注入(inject)自己的自定义服务以及一些更标准的对象,例如 vertx 实例本身。 目前我正在像这样初始化网络服务器(即
我正在使用自动绑定(bind)配置设置为 false 的 kendoui 网格。我想在单击按钮时绑定(bind)数据。我不想使用 datasource.read() 因为它会进行额外的服务器端调用。我
我有一个将“自动绑定(bind)”属性设置为 false 的 Kendo UI 网格。我还将“pageable.alwaysVisible”属性设置为 false,以便在不需要时隐藏网格的寻呼机。 我
关于在 ES6 React 中处理绑定(bind)的多种方法,有很多的问题/文章,但大多数似乎都没有解决 React docs 中概述的问题。 (强调我的): We recommend that yo
我是一名优秀的程序员,十分优秀!