首页 > 解决方案 > 如何访问多个 javascript 对象?

问题描述

在我的 ReactJs 中,我设置了以下状态:

this.state = {
questionsAnswer: [
        { // first question
          question: 'A simple question: ',
          options: [ 'Answer1', 'Answer2', 'Answer3'],
          answer: 'Answer3',
        },
        { // second question
          question: 'Second Simple Question',
          options: ['Answer1', 'Answer2'],
          answer: 'Answer1'
        }]}

这是一个类似测验的应用程序,可以检查您的答案。我遇到的问题是我根据“选项”的长度渲染一个元素。为简单起见,让该元素成为 div。当我渲染问题 1 时,渲染了三个 div;在问题 2 中,会呈现两个 div。

我遇到的问题是我无法动态访问对象状态的内部元素,因此我可以渲染 DIV 的数量。例如,我们可以执行 this.state.questionsAnswer[0].options.length 来访问第一个元素的长度并更改索引以获取第二个元素。

根据选项的长度呈现元素的最佳方法是什么?

我尝试的是:

for (let i = 0; i < this.state
                              .questionsAnswer[0]
                              .options
                              .length; i++) { //// render div here }

我应该在 questionsAnswer 中运行另一个循环吗?或者也许是 beforeEach?

我必须提到的另一件事是我试图在 render() 之后访问它{//here }

标签: javascriptarraysreactjsdictionary

解决方案


我遇到的问题是我无法动态访问对象状态的内部元素,因此我可以渲染 DIV 的数量。

是的你可以!您可以通过选项映射问题和映射,返回 div。

this.state.questionsAnswer.map(question => {
  return question.options.map(option => {
    <div>stuff</div>
  })
})

推荐阅读