2016-11-20 1 views
0

Я создал Реагировать компонент в моем файле JSX и в конструкторе у меня есть:Как передать данные в this.state - React.js?

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 

Я очень потерянное, почему это так. Должны ли данные быть отформатированы определенным образом?

ответ

1

В Реагировании каждый компонент state представляет собой простой объект JavaScript. В первом примере, поскольку вы сказали, что компонент хорошо отображен, кажется, что ваш компонент использует свойство datathis.state.

Если вы измените его на this.state.linedata, this.state.data будет undefined. Вероятно, вы должны обновить свой компонент, чтобы читать от this.state.linedata вместо this.state.data.

Дополнительные примеры того, как вы написали свою функцию render и способы использования d3 в вашем коде, помогут вам дать более точный и полезный ответ.

2

Вы пытаетесь переназначить this.state после первоначального задания? Вы никогда не должны вручную устанавливать состояние компонента; вместо этого используйте this.setState.

Смежные вопросы