javascript - 当我尝试为其设置文件时,反应组件会更改其他组件状态。我该如何解决?
问题描述
我有一个反应组件,其状态包含文件源、文件 URL 和来自同一组件中的文本字段的一些其他值。当我多次渲染该组件并尝试为它们设置文件时,它适用于第一个,但是当我尝试在第二个或第三个等组件上设置文件时,它会将该文件设置为第一个仅(第一个组件状态)。状态不是共享的,也不是从父组件中拉下来的。当我尝试更改文本字段中的文本时,它工作正常,文本出现在所有这些字段中应该出现的位置。任何想法这有什么问题,我该如何解决这个问题?提前致谢。
组件状态和状态处理程序代码:
const [value, setValue] = useState({
fileSrc: null,
fileURL: '',
name: '',
desc: '',
price: 0,
});
const handleFile = (e) => {
setValue({
...value,
fileSrc: e.target.files[0],
fileURL: URL.createObjectURL(e.target.files[0])
});
};
const handleValueChange = (prop) => (event) => {
setValue({ ...value, [prop]: event.target.value });
};
解决方案
推荐阅读
- c# - 如何在 MVC 中仅发布列表中的选定项目
- java - 错误:缺少 JavaFX 运行时组件,需要运行此应用程序 - 分析
- string - MongoDB:查找每个类别的最大值和最小值
- node.js - 找不到模块“firebase-tools”的声明文件
- javascript - 在 node.js/socket.io 中制作甲板“服务器端”
- javascript - 不能在 react-native 中使用 uuid4
- c - 如何从 Mega2560 上的 UDRN 获取数据?
- swift - 尝试 pushViewController 时“无法转换类型的值”
- postgresql - 带有“带时区的时间戳”的 Postgresql COPY FROM 文件 - 获取“格式错误的数组文字”
- ios - ios webview将状态栏背景设置为白色,字体颜色设置为黑色