开发者问题收集

我们如何将数据传递到 this.state - React.js?

2016-11-20
501

我在 JSX 文件中创建了一个 React 组件,在构造函数中我有:

this.state = {data: [[200,100],[50,60],[100,300]] };

这完全没问题。它运行良好。

但是,如果我添加:

this.state = {linedata: [{x:200,y:100},{x:50,y:60},{x:100,y:300}] };

我得到:

d3.js:265 Uncaught TypeError: Cannot read property 'length' of undefined

我非常困惑为什么会出现这种情况。数据是否应该以某种方式格式化?

2个回答

您是否在初始分配后尝试重新分配 this.state ?您永远不应手动设置组件状态;而是使用 this.setState

2016-11-20

在 React 中,每个组件的 state 都是一个简单的 JavaScript 对象。在您的第一个示例中,由于您说组件渲染效果很好,因此您的组件似乎利用了 this.statedata 属性。

如果您将其更改为 this.state.linedatathis.state.data 将为 undefined 。您可能应该更新您的组件以从 this.state.linedata 而不是 this.state.data 读取。

更多关于您如何编写 render 函数以及您在代码中使用 d3 的方式的示例将有助于为您提供更精确和更有用的答案。

Yangshun Tay
2016-11-20