javascript - 将数组中的数据映射到子组件和父组件中

标签 javascript arrays reactjs

我将数据存储在数组中的 data.js 文件中。我在子组件中显示该数据(仅数组中的第一个对象)。我想映射父组件中的相同数组(通过渲染 <ChildComponent> )。我怎样才能做到这一点?

数据.js

export default {
  accordionItems: [
    {
      id: 1,
      title: 'Why is my car not green?',
      answer: 'We ran out of green color',
    },
    {
      id: 2,
      title: 'Where have all the drivers gone?',
      answer: 'It\'s lunch time',
    },
    {
      id: 3,
      title: 'Do you have a book of complains',
      answer: 'You can write at info@mail.eu',
    },
  ],
};

子组件

import Data from './data';

class AccordionItem extends Component {
  constructor(props) {
    super(props);
    this.state = {
      question: Data.accordionItems[0], //if I remove [0], no data is rendered
    };
  }

 return (
    <div >
      <div>
        <p>{question.title}</p>
        <button>toggle</button>
      </div>
      <p>{question.answer}</p>
      <hr />
    </div>
 );

父组件

import AccordionItem from './AccordionItem';
import Data from './data';


class Accordion extends Component {
  constructor(props) {
    super(props);
    this.state = {
      accordionItems: Data.accordionItems,
    };
  }
render() {
    const { accordionItems } = this.state;
    return accordionItems.map(accordionItem => (
      <AccordionItem key={accordionItem.id} />

我想从父组件中的“数据”数组中获取所有 3 个对象,现在我只使用第一个对象获取 3 个相同的组件。

最佳答案

将项目作为 Prop 传递下去:

 <AccordionItem question={accordionItem} ... />

您可以在 render() 方法中访问它:

render() {
 const { question } = this.props;

 return (
   <div >
     <div>
       <p>{question.title}</p>
       <button>toggle</button>
     </div>
     <p>{question.answer}</p>
   </div>
 );
}

您根本不应该使用状态。

关于javascript - 将数组中的数据映射到子组件和父组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55503145/

相关文章:

javascript - 如果不使用 v-model.lazy,Vue3 Cleave js 将无法工作

javascript - ES6 在覆盖 javascript 中的函数时访问子类的 `this`

ruby - 从 ruby 数组中获取随机元素(您的解决方案)?

c++ - 将处理器结果保存到 MPI 中的一个数组

javascript - 如果使用 react 满足某些条件,则显示下拉列表

javascript - 在私有(private)范围内包含 JS 文件

javascript - 通过电子邮件发送预选的 HTML 输入

javascript - 循环设置内部 HTML

javascript - 使用 ReactJS 的共享元素转换

reactjs - 在 React 的 Canvas 元素上加载图像