如何解决可观察值更改时复选框不会重新呈现,但其他元素会
我正在更改一个 observable 属性,当我更改时,它会按预期重新呈现 html 元素,但复选框除外 - 它们根本不会更改。例如:在下面的代码中,当我单击任一复选框时,我希望另一个复选框和“操作系统值”div 都重新渲染,但只有 div 重新渲染。另一个复选框保持不变。
这是我的可观察类型:
export class SearchFilter
{
@observable _os?: string;
get os() { return this._os;}
set os(v: string | undefined) {action(()=>{ this._os = v;})()}
}
这是我的渲染代码:
render() {
const {currentFilter } = this.props;
const renderCheckBox = (label: JSX.Element,value: boolean | undefined,changeValue: (newValue: boolean) => void) =>
{
return (<div className={styles.inputItem}>
<input
type="checkBox"
defaultChecked={value}
onChange={(e) => changeValue(e.target.checked)}/>
{label}
</div>);
}
return <div>
{renderCheckBox(
<span>Windows</span>,currentFilter.os === "Windows",(v) => currentFilter.os = v ? "Windows" : undefined )}
{renderCheckBox(
<span>macOS</span>,currentFilter.os === "macOS",(v) => currentFilter.os = v ? "MacOS" : undefined)}
<div>OS Value:{currentFilter.os}</div>
</div>
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。