Reactjs 在React中使用for循环时,this.setState不会将项推入数组
如何使用react将单个项目从一个阵列转移到另一个阵列 我有一个处于我创建状态的项目数组,但我需要将它们逐个发送到另一个状态。最好的方法是什么?我尝试了回调函数,但我不想使用setTimeoneReactjs 在React中使用for循环时,this.setState不会将项推入数组,reactjs,Reactjs,如何使用react将单个项目从一个阵列转移到另一个阵列 我有一个处于我创建状态的项目数组,但我需要将它们逐个发送到另一个状态。最好的方法是什么?我尝试了回调函数,但我不想使用setTimeone state = { imageChosen: [] }; // Choose multiple images to upload fileSelectedHandler = event => { let tmp = []; for (let i = 0; i < e
state = { imageChosen: [] };
// Choose multiple images to upload
fileSelectedHandler = event => {
let tmp = [];
for (let i = 0; i < event.target.files.length; i++) {
tmp.push(event.target.files[i])
}
this.setState({ imageChosen: tmp }, () => this.uploadMedia());
}
// Add chosen images to the media chosen array
uploadMedia = () => {
for (let i = 0; i < this.state.imageChosen.length; i++) {
this.setState({
mediaChosenArr: [...this.state.mediaChosenArr, this.state.imageChosen[i]],
displayMediaChosenArr: [...this.state.displayMediaChosenArr, URL.createObjectURL(this.state.imageChosen[i])],
imageChosen: [],
});
}
document.getElementById("mediaPlaceholder").value = '';
};
state={imageselected:[]};
//选择要上载的多个图像
fileSelectedHandler=event=>{
设tmp=[];
for(设i=0;ithis.uploadMedia());
}
//将所选图像添加到所选媒体阵列
上传媒体=()=>{
for(设i=0;i
不建议将setState()
与一起用于循环
已编辑
fileSelectedHandler = event => {
let mediaChosenArr = [];
let displayMediaChosenArr = [];
for (let i = 0; i < event.target.files.length; i++) {
mediaChosenArr.push(event.target.files[i]);
displayMediaChosenArr.push(URL.createObjectURL(event.target.files[i]);
});
}
this.setState({
mediaChosenArr: mediaChosenArr,
displayMediaChosenArr: displayMediaChosenArr
});
document.getElementById("mediaPlaceholder").value = ''; // It seems not good.
}
fileSelectedHandler=event=>{
让mediaChosenArr=[];
让displayMediaChosenArr=[];
for(设i=0;i
不建议将setState()
与一起用于循环
已编辑
fileSelectedHandler = event => {
let mediaChosenArr = [];
let displayMediaChosenArr = [];
for (let i = 0; i < event.target.files.length; i++) {
mediaChosenArr.push(event.target.files[i]);
displayMediaChosenArr.push(URL.createObjectURL(event.target.files[i]);
});
}
this.setState({
mediaChosenArr: mediaChosenArr,
displayMediaChosenArr: displayMediaChosenArr
});
document.getElementById("mediaPlaceholder").value = ''; // It seems not good.
}
fileSelectedHandler=event=>{
让mediaChosenArr=[];
让displayMediaChosenArr=[];
for(设i=0;i
避免从循环内部调用setState
,因为每次调用setState
都会导致渲染
而是首先组装所选的图像
数组,然后将其传递给setState
。此外,由于您没有修改文件数组,因此应该能够直接将其传递到setState
,而无需循环
还要记住
避免从循环内部调用setState
,因为每次调用setState
都会导致渲染
而是首先组装所选的图像
数组,然后将其传递给setState
。此外,由于您没有修改文件数组,因此应该能够直接将其传递到setState
,而无需循环
还要记住
您可以使用模板数组
state = { imageChosen: [] };
fileSelectedHandler = event => {
let tmpArray = [...imageChosen];
for (let i = 0; i < event.target.files.length; i++) {
tmpArray.push(event.target.files[i]);
console.log(event.target.files[i])
}
this.setState({imageChosen: tmpArray})
}
state={imageselected:[]};
fileSelectedHandler=event=>{
让tmpArray=[…ImageSelected];
for(设i=0;i
您可以使用模板数组
state = { imageChosen: [] };
fileSelectedHandler = event => {
let tmpArray = [...imageChosen];
for (let i = 0; i < event.target.files.length; i++) {
tmpArray.push(event.target.files[i]);
console.log(event.target.files[i])
}
this.setState({imageChosen: tmpArray})
}
state={imageselected:[]};
fileSelectedHandler=event=>{
让tmpArray=[…ImageSelected];
for(设i=0;i
您可以用几种方法来实现这一点,下面是一种使用forEach的方法
const initialArray = ['one.png','two.png','three.png']
this.state = { imageChosen: [] };
let {imageChosen} = this.state
initialArray.forEach(insertImages);
function insertImages(value) {
this.setState({imageChosen: value})
}
你可以用几种方法来实现这一点,这里有一种是forEach
const initialArray = ['one.png','two.png','three.png']
this.state = { imageChosen: [] };
let {imageChosen} = this.state
initialArray.forEach(insertImages);
function insertImages(value) {
this.setState({imageChosen: value})
}
你能看一下我刚做的更新,让我知道是否有办法做到这一点吗?如果mediaChosenArr和displayMediaChosenArr状态的数组中已经有我需要附加的内容,我该怎么办?NVM,我知道了。我只需要将现有状态推入这些初始变量。非常感谢你的帮助!你能看一下我刚做的更新,让我知道是否有办法做到这一点吗?如果mediaChosenArr和displayMediaChosenArr状态的数组中已经有我需要附加的内容,我该怎么办?NVM,我知道了。我只需要将现有状态推入这些初始变量。非常感谢你的帮助!