当前位置: 首页 > 知识库问答 >
问题:

如何在react native render中以无限循环返回数组项视图?

谢同化
2023-03-14

假设list.length是5我需要在无限循环中返回下面的视图。不是在5的循环中。我想把数组一个一个的过一遍,当它来到索引4的时候,它应该再次指向0索引,这个过程应该是递归执行的,
在这里,它会在来到数组的最后一个索引之后停止。当"i"来到数组的最后一个索引时,我尝试设置"i=0",但无法访问。有没有办法在javascript中实现这个场景。

注:我将粘贴我的渲染方法的一些代码片段在我的反应本机jsx文件中。欢迎任何评论。

return this.state.list
      .map((item, i) => {
        if (i === this.state.currentIndex) {
          return (
            <Animated.View
              {...this.panResponder.panHandlers}
              key={item.id}
              style={[
                this.rotateAndTranslate,
                { height: SCREEN_HEIGHT - 120, width: SCREEN_WIDTH, padding: 10, position: "absolute" }
              ]}
            >
              <Animated.View
                style={{
                  opacity: this.likeOpacity,
                  transform: [{ rotate: "-30deg" }],
                  position: "absolute",
                  top: 50,
                  left: 40,
                  zIndex: 1000
                }}
              >
              ....................more codes....................... 
              </Animated.View>

              <Image style={{ flex: 1, resizeMode: "contain", borderRadius: 20 }} source={{ uri: item.image }} />
            </Animated.View>
          );
        }else{
           return something;
        }

    }).reverse();

共有2个答案

唐康安
2023-03-14

像这样修改i不会对下一次迭代产生任何影响,因为它是传递给map的函数中的参数。如果您想像这样操作i,您应该使用在循环主体范围之外定义了i的循环。

差不多

let i = 0;
while (i < this.state.list.length) {
  if (something) {
    i++;
  } else {
    i = 0;
  }
}

要确切理解你想实现什么有点困难,但希望这有助于澄清一些困惑。

酆恩
2023-03-14

我认为你需要一个功能组件,5点击后重新加载。.

// Get a hook function
const {useState, useEffect} = React;

const Example = ({title}) => {
  const [count, setCount] = useState(0);
  
  const [compCount, setCompCount] = useState(0);
  return (
    <div>
    {<GetComp value={compCount}/>}
      <button onClick={() => {
        setCount(count+1);
        if(count % 5 ==0 && count != 0){
          setCompCount(compCount + 5)
        }
      }}>
        Click me
      </button>
    </div>
  );
};

const GetComp = props => {
  return [1,2,3,4,5].map(e => <div> {e+props.value} </div>)
}

// Render it
ReactDOM.render(
  <Example title="Example using Hooks:" />,
  document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>
 类似资料:
  • 问题内容: 我想在SQL Server 2005中使用无限循环,并在某些情况下使用关键字退出它。 不起作用,所以我必须使用。有没有更好的方法来组织无限循环? 我知道我可以使用,但是结构上看起来更好。 问题答案: 除了其他答案所建议的以外,我还经常在SQL“ infintie”循环中添加“超时”,如以下示例所示: 我发现上述技术在从长轮询AJAX后端调用的存储过程中很有用。在数据库端进行循环可以使应

  • 如果以前有人问过这个问题,我很抱歉,但我找不到答案。如何循环使用嵌套数组的数组,并在控制台中打印项目出现的实例数? 因此应该打印出名称“bob”的数字2,因为“bob”在数组中出现两次。 这是我的阵列和我目前拥有的:

  • 我需要在eventmachine上有一个无限循环,它不断地读取redis队列。下面是我的代码。递归是正确的方法吗?我尝试了loop,但无法以那种方式工作。

  • 我刚刚部署了一个laravel项目在aws轻帆实例,但当我试图通过我的IPhttp://65.0.166.121/访问我的网站,主页继续加载在一个无尽的循环,但我可以访问其他链接,即http://65.0.166.121/login.

  • 问题内容: 尽管我知道问这个问题会有点愚蠢,但我仍然想查询有关它的技术观点的更多信息。 无限循环的简单示例: 如何从此类外部中断(停止)此无限循环(例如,在继承的帮助下)? 问题答案: 即使写这篇文章我也觉得很脏,但是… 从不同的线程,你可以调用一个实现,抛出一个当你调用。

  • 问题内容: 我想重复创建div,这些项目是函数返回的对象。但是,以下代码报告错误:达到10个$ digest()迭代。流产!jsfiddle在这里:http://jsfiddle.net/BraveOstrich/awnqm/ 问题答案: 简短的回答 :您真的需要这样的功能还是可以使用属性?http://jsfiddle.net/awnqm/1/ 长答案 为简单起见,我仅描述您的情况-ngRepe