【问题标题】:Rendering from loop react native从循环渲染本机反应
【发布时间】:2020-11-16 18:12:35
【问题描述】:

我想迭代嵌套对象并为每个项目渲染出一个文本元素,以响应本机。

const translationToWeekDays = {
fr_FR: {
  Monday: lundi,
  Tuesday: mardi,
  Wednesday: mercredi,
  Thursday: jeudi,
  Friday: vendredi,
},
};

这是对象,这是我当前的代码

          <>
            {Object.values(translationToWeekDays).forEach((week) => {
              Object.values(week).forEach((day) => (
                <Row>
                  <Text>
                    {day}
                  </Text>
                </Row>
              ));
            })}
          </>

关于我哪里出错的任何指示? :(

【问题讨论】:

    标签: javascript reactjs react-native foreach


    【解决方案1】:

    试试这样的?

    {Object.values(translationToWeekDays).map((week) => { Object.values(week).map((day) =>

    {天}

    )}>)}

    【讨论】:

    • 澄清一下,.forEach 没有返回值,所以这就是为什么 .map 可以代替。
    【解决方案2】:

    不能发表评论,但请确保使用 map,因为它可以返回 jsx...

    const translationToWeekDays = [
    [
      lundi,
      mardi,
      mercredi,
      jeudi,
      vendredi
    ],
    ];
    
    <>
                {translationToWeekDays.map((week) => {
                  Object.values(week).map((day) => (
                    <Row>
                      <Text>
                        {day}
                      </Text>
                    </Row>
                  ));
                })}
              </>
    

    【讨论】:

    • 仍然没有渲染出来:(
    • 哦,我看错了你的帖子......你应该使用数组而不是嵌套对象......将更新代码
    • 如果您想使用地图功能,您可以做的是将其更改为数组并通过索引验证日期
    • 我不能在不改变对象的情况下让它工作吗?我想保留该对象,必须有一种方法可以在循环中通过迭代嵌套对象进行渲染
    • 父对象中是否还有其他语言?
    【解决方案3】:

    为了解决你的问题,你可以试试这个,可以不改变原来的对象。

    const translationToWeekDays = {
      fr_FR: {
        Monday: "lundi",
        Tuesday: "mardi",
        Wednesday: "mercredi",
        Thursday: "jeudi",
        Friday: "vendredi"
      }
    };
    
    export default function App() 
    {
    
      let daysTranslation = []
    
      for (let day in translationToWeekDays.fr_FR) 
      {
        daysTranslation.push({
          id: day,
          value: translationToWeekDays.fr_FR[day]
        })
      }
    
    
      const daysTranslated = daysTranslation.map(item =>
        {
          return <Text>{item.value}</Text>
        })
    
    
    
      return (
        <Row>
          {daysTranslated}
        </Row>
      );
    }
    

    但是,使用 Flatlist 比使用映射更好。但这应该适用于一个小列表。要循环内容,最好将对象转换为地图

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 2021-06-02
      • 1970-01-01
      • 2021-09-26
      • 2017-07-14
      • 2018-12-22
      • 2020-05-05
      • 2019-02-16
      • 2022-06-15
      相关资源
      最近更新 更多