微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可观察值更改时复选框不会重新呈现,但其他元素会

如何解决可观察值更改时复选框不会重新呈现,但其他元素会

我正在更改一个 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 举报,一经查实,本站将立刻删除。