我目前正在尝试构建 next.js 应用。
所以我想做的是将一个函数传递给一个组件并使用 useEffect 调用它
我有以下组件来更改父元素的道具。因此,我像这样从父级传递函数:
<NumberInput name="height" update={manuelUpdate}></NumberInput>
manuelUpdate 函数是另一个来自实际父级的 props 函数:
const manuelUpdate = (name, value) => {
props.update(name, value);
};
如果我使用 onclick 函数运行 props.function,它就可以正常工作。但是,一旦我尝试在 useEffect 中使用它,它就会返回该函数不是函数。 也许我只是想复杂..
这是组件;
const NumberInput = ({ name, min = undefined, max = undefined, ...props }) => {
const minInput = min !== undefined
? min
: null;
const maxInput = max !== undefined
? max
: null;
const [numb, setNumb] = useState(0);
useEffect(() => {
console.log(props.update)
}, [numb]);
const increaseNumb = () => {
if (numb < maxInput || maxInput == null) {
setNumb(numb + 1)
}
props.update(name, numb)
};
const decreaseNumb = () => {
if (numb < minInput || minInput == null) {
setNumb(numb - 1)
}
};
const changeHandler = ({ e }) => {
let n = parseInt(e.target.value)
if (Number.isNaN(n)) {
setNumb(numb)
} else {
setNumb(n)
}
}
return (
<div className={styles.def_number_input, styles.number_input}>
<button onClick={decreaseNumb} className={styles.minus}></button>
<input className={styles.quantity} name="quantity" value={numb} onChange={(e) => changeHandler({ e })}
type="number" />
<button onClick={increaseNumb} className={styles.plus}></button>
</div>
);
};
如果我的问题很愚蠢或者我的代码很乱,请提前抱歉,我还在学习中:D
答案 0 :(得分:0)
问题与另一个问题有关。我不小心调用了组件2次忘记调整参数。 案例已结束