React Checkbox 组件不将状态保存到 LocalStorage

React Checkbox Component not saving state to LocalStorage

我正在 React 中创建一个包含复选框的组件。我希望它来回切换(打开和关闭)并将状态保存在本地存储中,这样如果我转到另一个页面,切换将设置为之前的状态。

注意:我没有使用 React 16,不能使用 state hooks

我创建了我的组件并添加了 ComponentDidMountComponentDidUpdate 函数,如下所示。

import * as React from "react";
import { Checkbox } from 'semantic-ui-react'

type Props = {
    label : string
}

type State = {
    status: boolean
}



class ChangeOrder extends React.Component<Props, State> {
    constructor(props) {
        super(props);
        this.state = {
            status: false
        }
    }

    componentDidMount() {
        localStorage.getItem('status') && this.setState({
            status: JSON.parse(localStorage.getItem('status'))
        })
    }

    

    componentDidUpdate(nextProps, nextState) {
        localStorage.setItem('status', JSON.stringify(nextState.status));
    }
    render() {
        return (
            
            <Checkbox
                
                onClick={() => this.setState({ status: !status })}
                label={this.props.label}        
                toggle

            />
        );
    }
}

export default ChangeOrder;

复选框有效,但不保存状态。

当我右键单击检查并转到 Application 并导航到 LocalStorage 时,我看到切换开关的值从 false 变为 true 但再次单击它不会 return 为假。

我希望能够保存并保持 true 和 false 之间的切换按钮状态。

您只需要将状态的点击事件状态设置为this.state.status,将status 值传递给checked prop 以确保输入具有预期值。另外,我不喜欢使用字符串化布尔值,而是将字符串布尔值评估为布尔类型。我构建了一个应用程序来查看 codesandbox.

我认为您的复选框点击功能中缺少this.status 变化

onClick={() => this.setState({ status: !status })} 

onClick={() => this.setState({ status: !this.state.status })}