【问题标题】:converting class setState to functional component将类 setState 转换为功能组件
【发布时间】:2021-09-30 14:13:10
【问题描述】:

尝试通过编码来学习反应,首先我有示例代码,我将其转换为钩子,然后我有另一个我不知道如何转换的示例代码。 我的问题是代码是否是这样的:

this.setState({name: 'James', destination: 'Paris'});

在钩子中它会像:

setName('James') setDestination('Paris')

我如何将其转换为钩子(不带':')

this.setState({name, destination, cameras,time});

是这样的吗

setName(name) setDestination(destination)...

?

【问题讨论】:

    标签: javascript html reactjs typescript react-hooks


    【解决方案1】:

    您可以为每个“名称”和“目的地”创建不同的状态。然后就可以单独使用setState了,如下

    const [name, setName] = useState('');
    const [destination, setDestination] = useState('');
    const [cameras, setCameras] = useState('');
    const [time, setTime] = useState('');
            
    setName('James');
    setDestination('Paris');
    setCameras('');
    setTime('');
    

    *根据cmets修改了四种状态

    另一种方法是创建一个对象

    const [state, setState] = useState({
        name: "",
        destination: "",
        cameras: "",
        time: ""
    });
    
    setState({
        ...state, 
        name:"James", 
        destination:"Paris"
    });
    

    【讨论】:

    • 忘记 james 和 paris,只需将其转换为 hooks:this.setState({name, destination, camera,time});
    • 您可以将其拆分为四个状态,也可以将状态创建为数组
    • 为什么要设置 setCameras('');如果你这样设置它应该在这样的类中: this.setState({name, destination, camera:'' ,time}) ?
    • 您可以为相机设置一个值,我只是添加了一个空字符串来显示它。如果要使用对象表示法,则必须使用冒号 (:)
    • 为此,您可以使用我在答案中显示的两种方法中的任何一种。您可以为 4 个变量创建 4 个状态并分别使用它们。或者您可以创建一个包含所有 4 个变量的对象,并将它们一起使用,如第二个示例所示
    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多