React Hooks - функция внутри компонента функции передана, поскольку prop не может получить доступ к состоянию - PullRequest
0 голосов
/ 24 января 2019

Я прочитал о React-хуках и хотел попробовать его на этом новом веб-сайте, который я разрабатываю.Я пытаюсь передать асинхронную функцию в качестве опоры.Часть функции состоит в том, чтобы установить состояние моего «города» и журнал консоли, просто чтобы посмотреть, работает ли API.Я получаю сообщение об ошибке «setCities is not function», или города возвращают неопределенное значение, если я просто консоль регистрирую это напрямую.Я думаю, что функция не может получить доступ к состоянию {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 голосов
/ 24 января 2019

useStates вернуть массив, а не объект ...

Так что вы можете изменить

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

до

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

И это должно работать.

...