React Hooks-作为prop传递的函数组件内部的函数无法访问状态

时间:2019-01-24 18:26:40

标签: reactjs react-hooks

我已经阅读了有关React挂钩的内容,并想在我正在开发的这个新网站上尝试一下。我试图通过异步函数作为道具。该功能的一部分是设置“城市”状态和控制台日志,以查看API是否有效。我一直在收到“ setCities不是函数”错误,或者,如果我只是直接通过控制台对其进行登录,则city返回undefined。我认为该函数无法访问{cities, setCities}状态。我已经在类组件中尝试过它,并且可以正常工作。有没有人遇到过类似的情况?下面是代码示例:

import React, { useState } from "react";
import axios from "axios";
import Menu from "./Menu";

function App() {
    const { cities, setCities } = useState([]);

    const searchSubmit = async term => {
        try {
            const res = await axios.get("http://localhost:8080/general/search", {
                params: { city: term }
            });
            setCities(res.data);
            console.log(cities);
        } catch (err) {
            console.log(err.message);
        }
    };

    return (
        <div className="ui container">
            <Menu handleSearchSubmit={searchSubmit} />
        </div>
    );
}

1 个答案:

答案 0 :(得分:2)

useStates返回一个数组,而不是一个对象...

因此您可以更改

const { cities, setCities } = useState([]);

const [ cities, setCities ] = useState([]);

它应该可以工作。