Вот как я обычно использую React.Если у меня есть компонент, который я хочу получить данные, я устанавливаю переменную состояния уровня массива (массив) для хранения этих данных.Затем у меня есть функция уровня приложения, которая обновляет этот массив на основе переданного массива (используя setState ()).Затем, когда я вызываю компонент, я отправляю ему массив уровня приложения, а также функцию уровня приложения.Внутри подкомпонента я получаю данные в локальный массив, затем вызываю переданную функцию с этим массивом.В моем коде рендеринга подкомпонента я ссылаюсь на массив, переданный с уровня приложения (не локальный массив, который я заполнил).
(примечание: в приведенном ниже псевдокоде я использую ...
, чтобы указать ваш существующийздесь будет идти код или другой код и т. д.)
Уровень приложения
state = {showQuestions: []}
...
updateQuestions = (newQuestions) => {
this.setState({showQuestions: newQuestions})
}
...
// then when you render (I'll assume the name of your component
// is Questions)
<Questions
questionData={this.state.showQuestions}
updatefunc={this.updateQuestions}
/>
Файл подкомпонента (внутри имеющегося кодавыше)
...
componentDidMount() {
// use your code above, I'm assuming you are putting data
// into the questions array
...
// after you've got the questions array all set up with all data
this.props.updatefunc(questions)
...
}
...
// now down in the render of your Questions component
render() {
return(
...
this.props.questionData.map(... <your other code))
...
}
В качестве примечания, в используемом мной коде React я не выполняю функцию конструктора.Синтаксис this.props.
доступен без этого.Так что, возможно, я нахожусь в другой версии React, чем вы.Также я не знаком с элементом <'row'>
, который вы показываете в своем render()
.Поэтому я не знаю, означают ли эти вещи мои приведенные выше примеры, которые будут работать как ожидалось, или нет.Я рекомендую разбрасывать операторы console.log()
, чтобы вы могли видеть, какие данные передаются, куда и т. Д. Удачи.