【发布时间】:2022-01-14 13:30:16
【问题描述】:
我需要通过遍历属性数组来动态更改对象的嵌套属性
import {set} from 'lodash';
const [request, setRequest] = useState(someDefaultProps);
const someFun = (properties) => {
let newRequest = {};
properties.forEach(({property, value}) => {
newRequest = set(request, property, value);
})
setRequest(newRequest);
}
通过 usestate 更改请求后,应该执行一个新请求,但没有任何反应,因为 usestate 没有触发。
我还尝试使用 lodash/fp 中的 set 函数,虽然现在请求有效,但应用程序的行为非常奇怪。在这种情况下,即使经过一些更改,请求数据也是旧的。例如,有一个单选按钮,当您单击它时,请求对象中的 someFlag 字段应设置为 false,这就是发生的情况。但是,如果您开始在输入字段中输入内容,请求对象的另一个属性会发生变化,并且 someDefaultProps 中的旧值会设置在 someFlag 字段中,尽管 someFlag 在输入期间不应更改。
感谢您的帮助
【问题讨论】:
-
“应该执行一个新请求”是什么意思?
标签: javascript reactjs lodash