Reactjs SetState内部使用效应导致无限循环
我不会在初始呈现中发送initialfileList。 因此,我试图在intialfileList值更改时更新状态(文件)。 但我不明白为什么代码会进入无限循环。。有人能帮忙吗 编辑:Reactjs SetState内部使用效应导致无限循环,reactjs,Reactjs,我不会在初始呈现中发送initialfileList。 因此,我试图在intialfileList值更改时更新状态(文件)。 但我不明白为什么代码会进入无限循环。。有人能帮忙吗 编辑: 我试图实现的是表单中有两个上传(比如上传A和上传B)以及复选框。当用户在Upload A中上传图像(比如imgc)并点击复选框时,我希望img c也能在Upload B中自动上传。啊,我明白了。这个怎么样 export const Upload = ({ initialfileList = [] }) =>
我试图实现的是表单中有两个上传(比如上传A和上传B)以及复选框。当用户在Upload A中上传图像(比如imgc)并点击复选框时,我希望img c也能在Upload B中自动上传。啊,我明白了。这个怎么样
export const Upload = ({ initialfileList = [] }) => {
console.log("called...")
const [files,setFiles] = useState(initialfileList)
useEffect(() => {
setFiles(initialfileList)
}, [initialfileList])
return(
.....
)
}
export const Upload=({initialfileList=[]})=>{
const[files,setFiles]=useState(initialfileList);
useffect(()=>{
函数是不同的文件(原始文件、新文件){
返回originFiles.length!==newFiles.length;//或此处的任何逻辑。
}
if(不同文件(文件、初始文件列表)){
setFiles(initialfileList);
}
},[initialfileList]);
返回{files.length};
};
BTW,您可能需要考虑将状态移动到父级。
< P>听起来您需要提升状态——而不是在本地存储文件集,将单个文件存储在父组件中,将其传递到上载A和上载B,并通过<代码> SETFILLISTISE/<代码>函数(它更新父组件中的状态) i、 e://父组件
常量父项=()=>{
const[fileList,setFileList]=useState([]
返回(
)
}
const Upload=({fileList,setFileList})=>{
返回(
)
}
这样,正在更新的任何一个上载组件都将同时更新。您如何知道它处于无限循环中?通过登录控制台。。我能猜到的唯一潜在问题是,
initialfileList
在父级中不断更新。是这样吗?但是初始呈现中不会发送初始文件列表。。只有选中复选框时,才会发送文件。您能否确定文件进入无限循环的原因。
export const Upload = ({ initialfileList = [] }) => {
const [files, setFiles] = useState(initialfileList);
useEffect(() => {
function isDifferentFiles(originFiles, newFiles) {
return originFiles.length !== newFiles.length; // or whatever logic here.
}
if (isDifferentFiles(files, initialfileList)) {
setFiles(initialfileList);
}
}, [initialfileList]);
return <div>{files.length}</div>;
};