【发布时间】:2021-05-29 19:14:44
【问题描述】:
在 react native 中,当我想用数组更新 useState 时出现此错误。
import React, {useState, useEffect} from 'react';
import { StyleSheet, View, Text} from 'react-native';
var generatecubes = true;
var cubesarr = [];
const Cubes = ({cubeHeight, cubeMover}) => {
const maxspikes = Math.ceil(global.canvasWidth/(global.cubesWidth + global.spacebetweencubes)+1);
const cubesstyle = StyleSheet.create({
cube:{
position: 'absolute',
width: global.cubesWidth,
height: cubeHeight,
transform: [
{translateX: cubeMover},
],
backgroundColor: 'blue',
}
})
var [cubes, setCubes] = useState([]);
if(generatecubes == true){
generatecubes = false;
var i;
for(i=0; i<maxspikes; i++){
cubesarr.push(
{
key: i,
position:{
left:i*global.spacebetweencubes+global.cubesWidth+global.canvasWidth,
}
}
);
}
setCubes(cubesarr);
}
if(global.cubechangeposition == true){
var newarr = cubesarr;
newarr[0].position.left = 50;
console.log(newarr[0].position.left);
/*console.log(cubesarr[0].position.left);
cubesarr[0].position.left = (cubesarr.length)*global.spacebetweencubes+global.cubesWidth+global.canvasWidth;
cubesarr.push(cubesarr.shift());
setCubes(cubesarr);*/
global.cubechangeposition = false;
}
return(
cubes.map((cube) => {
return(
<View key={cube.key} style={[cubesstyle.cube,cube.position]}>
<Text style={{color: "white", fontSize: 20}}>{cube.key}</Text>
</View>
);
})
);
}
export default Cubes;
所有这些东西都会从 App.js 每秒更新一次。我尝试使用包含旧数组但仍然出现相同错误的新数组来更新数组。
【问题讨论】:
标签: javascript reactjs react-native react-hooks