【发布时间】:2021-08-01 00:59:01
【问题描述】:
我将我的复选框输入提取到单独的自定义组件中,以便以后可以轻松地重用它。但是,每当父级的状态发生变化时,这个自定义组件中的检查值就不会改变。当我首先移动页面并稍后打开它但不是实时时,它实际上正在改变。但是当我使用默认输入组件时,它会实时工作。知道这怎么可能吗?
import React from 'react';
const Checkbox = ({ name, id, className, onValueChange, defaultChecked = false }) => {
let classes = 'checkbox';
if (className) {
classes += ` ${className}`;
}
const valueChangeHandler = (event) => {
if (onValueChange) {
onValueChange(event.target.checked);
}
};
return (
<input
type="checkbox"
name={ name }
id={ id }
className={ classes }
defaultChecked={ defaultChecked }
onChange={ valueChangeHandler }
/>
);
};
export default Checkbox;
【问题讨论】:
-
您可以尝试在输入时使用
checked而不是defaultChecked吗? -
我试过了。当我使用checked时,我不能改变输入,也不会触发onChange事件。
-
在调用父级的
onValueChange时,您是否检查过defaultChecked属性是否正在更新? -
我正在使用 redux 作为状态。我已经用 console.log 多次检查了状态,它正在改变,但复选框自定义组件没有实时改变。
标签: javascript reactjs checkbox