Yve*_*nge 1 javascript coffeescript reactjs
从最新版本的ReactJS开始,我们发出警告,要求为动态子项添加键.我遇到了一些问题,发现哪个组件产生了这个警告...我首先假设只有在"for循环"中动态生成的子项才会抛出此警告(因为它是"动态生成的").最后,我发现我们应用程序的每个组件都会抛出此错误,因为我们到处都有子项(即使我们没有"for循环"):(
我们正在使用CoffeeScript,我问自己是否正在以正确的方式使用ReactJS:
DOM = React.DOM
myComponent = React.createClass
render: ->
DOM.div {className: "app", ref: "app"},
DOM.div {className: "child1"}, "This is a test" # throw warning
DOM.div {className: "child2", key: "child2"}, "Hello" # don't throw warning
Run Code Online (Sandbox Code Playgroud)
这里child1除非我们添加一个是扔一个警告关键属性.这种行为是否正常?我们做错了吗?我的意思是我们需要为500多个组件/子项添加密钥,这是一项艰苦而乏味的工作......
此外,警告说"undefined"函数正在抛出它.所以我需要每次挖掘大约10分钟到1小时来检查纠正的地方...... :(
最好的问候,Kursion
这里有两件事,所以让我们将它们分开......
除非我们添加一个键属性,否则child1会抛出警告.这种行为是否正常?我们做错了吗?我的意思是我们需要为500多个组件/子项添加密钥,这是一项艰苦而乏味的工作......
此外,警告说"undefined"函数正在抛出它
这是因为React使用一个名为displayName(在传递给的对象上指定)的属性createClass来构建该警告.使用JSX时,我们可以根据赋值为您自动生成该属性.它并不总是完美的,但它通常运作良好.使用CoffeeScript时,您可能希望自己指定此属性.
/** @jsx React.DOM */
var MyComponent = React.createClass({ ... });
// becomes
var MyComponent = React.createClass({displayName: 'MyComponent', ... });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |