javascript - CheckBoxes React Native Map函数返回错误: Too many re-renders. React限制渲染数量以防止无限循环

标签 javascript reactjs react-native

我有这段代码,应该绘制复选框。

这是我的 Hashtags.js 文件:

import React, { useState } from 'react';
import {StyleSheet, View, Image} from 'react-native';
import { CheckBox } from 'react-native-elements';
const HashtagsList =[
  {checked: false, title: '#tip1'},
  {checked: false, title: '#tip2'},
  {checked: false, title: '#tip3'},
  {checked: false, title: '#tip4'},
  {checked: false, title: '#tip5'},
  {checked: false, title: '#tip6'}, 
];

const Hashtags = props => { 
  const [hashtags, setHastags] = useState([]);
  setHastags(HashtagsList);

const toggleCheckbox = (title) =>{   
  const checkedHashtags = hashtags.find((hashtag) => hashtag.title === title);
  checkedHashtags.checked = !checkedHashtags.checked;
  const checkboxes = Object.assign({}, hashtags, checkedHashtags);
  setHastags({ checkboxes });
};

hashtags.map((hashtag, i) => {
  console.log(hashtag);
  return (
    <CheckBox
      key = {i}
      title = {hashtag.title}
      checkedIcon={<Image style={styles.chekBoxPic} source={require('../assets/svg/checked.svg')} />}
      uncheckedIcon={<Image style={styles.chekBoxPic} source={require('../assets/svg/unchecked.svg')} />}        
      checked={hashtag.checked}
      onPress={() => toggleCheckbox(hashtag.title)}
    /> 
    );
 })

};
const styles = StyleSheet.create({   
  chekBoxPic:{
    width: 22, 
    height: 22, 
  },
});
export default Hashtags;

我的 main.js 页面如下所示:

...
<View type={styles.someStyle}>
   <Hashtags />
  </View>
...

但我收到错误:“重新渲染次数过多。” React 限制渲染数量以防止无限循环。” 我哪里出错了?

最佳答案

我认为这可能是因为 setHastags(HashtagsList) 导致 Hashtags 组件最终陷入无限循环。

您可以像这样初始化初始 HashtagsList:

const [hashtags, setHastags] = useState(HashtagsList);

关于javascript - CheckBoxes React Native Map函数返回错误: Too many re-renders. React限制渲染数量以防止无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581624/

相关文章:

javascript - 抛出错误并使用finally block 发送错误代码500

javascript - 如何获取链接的默认颜色?

ios - React Native 返回一个元素到控制台日志

xcode - 在iOS模拟器上运行React Native应用程序时,诊断过程的CPU负载很高

ios - project.pbxproj 始终在 git 中标记为已修改

javascript - 使用 mapstatetoprops 提取数据

javascript - ngx 分页,如何使用 NgFor 进行多个分页?我的代码有问题,(pagechange) 正在操纵组件数据

reactjs - react : Environment Specific Config on Production Builds

javascript - 使用 React Native 异步返回一个值

javascript - 通过嵌套路由reactJS传递props