React useEffect 检测对象内部数组的变化
React useEffect detect changes in an array inside the object
我正在尝试使用 useEffect 挂钩根据状态变化调用 API。但是,我的 useEffect 无法检测到对 'type' 数组所做的更改。我尝试使用 use-deep-compare-effect 库,但它也无法检测到变化。
如何检测我的状态变化?
非常感谢任何帮助!
const [values, setValues] = useState({
query: '',
type: ["Tender & Auction", "Merger & Acquisition","Policy & Regulation", "Project Update", "Other"]
})
/// Re-run a query, after we check a filter
useEffect(() => {
searchAPI(values);
}, [values]);
我正在像这样更改值:
const handleChange = (newValues) => {
console.log(newValues)
setValues({ ...values, type: newValues})
};
这是一种简单的比较方法,不会导致无限循环:
useEffect(() => {
searchAPI(values);
}, [JSON.stringify(values)]);
或者如果您只需要跟踪类型 属性:
useEffect(() => {
searchAPI(values);
}, [JSON.stringify(values.type)]);
指定范围
useEffect(() => {
searchAPI(values);
}, [values,values.type]);
我正在尝试使用 useEffect 挂钩根据状态变化调用 API。但是,我的 useEffect 无法检测到对 'type' 数组所做的更改。我尝试使用 use-deep-compare-effect 库,但它也无法检测到变化。
如何检测我的状态变化?
非常感谢任何帮助!
const [values, setValues] = useState({
query: '',
type: ["Tender & Auction", "Merger & Acquisition","Policy & Regulation", "Project Update", "Other"]
})
/// Re-run a query, after we check a filter
useEffect(() => {
searchAPI(values);
}, [values]);
我正在像这样更改值:
const handleChange = (newValues) => {
console.log(newValues)
setValues({ ...values, type: newValues})
};
这是一种简单的比较方法,不会导致无限循环:
useEffect(() => {
searchAPI(values);
}, [JSON.stringify(values)]);
或者如果您只需要跟踪类型 属性:
useEffect(() => {
searchAPI(values);
}, [JSON.stringify(values.type)]);
指定范围
useEffect(() => {
searchAPI(values);
}, [values,values.type]);