React-无法使用容器组件中定义的功能更改子组件的状态

本杰明

这是我的容器组件:

 import React, {useState} from 'react';
import Search from '../components/Search';
import Weather from '../components/Weather';
import Location from '../components/Location';
import 'tachyons';


const api = {
  key: '1e96cf99930c0192bd53fe21fa67fbc1',
  base: 'https://api.openweathermap.org/data/2.5/weather'
}


const App = () => {
  const [query, setQuery] = useState('q');
  const [weather, setWeather] = useState({});


  const getWeather = (e) => {
    if (e.key === 'Enter') {
      setQuery(e.target.value);
      fetch(`${api.base}?q=${query}&units=imperial&APPID=${api.key}`)
        .then(res => res.json())
        .then(data => {
          setWeather(data);
          setQuery('');
          console.log(data);
        });
    }
  }


  return (
    <div className="app tc">
      <div className="search-box">
        <Search getWeather={getWeather} />
      </div>
    </div>
  );
}

export default App;

这是我的孩子部分:

import React from 'react';


const Search = ({ getWeather }) => {
  return (
    <input type="search" className="search-bar" onKeyPress={getWeather} />
  );
}

export default Search;

我遇到的一个问题是,即使getWeather函数在按键上运行,也不能更改天气或查询的状态。万一我做错了什么?

提前谢谢大家!

六月

按Enter键时,您正在设置查询。将其移动到搜索组件并在那里更新值。

const Search = ({ getWeather, onChange }) => {
  return (
    <input type="search" onChange={(e) => onChange(e.target.value)} className="search-bar" onKeyPress={getWeather} />
  );
}

在您的搜索组件中,从getWeather中删除setQuery。

<Search onChange={setQuery} getWeather={getWeather} />

// Get a hook function
const {useState, useEffect} = React;

const api = {
  key: '1e96cf99930c0192bd53fe21fa67fbc1',
  base: 'https://api.openweathermap.org/data/2.5/weather'
}

    const Search = ({ getWeather, onChange }) => {
      return (
        <input type="search" onChange={(e) => onChange(e.target.value)} className="search-bar" onKeyPress={getWeather} />
      );
    }

function App(){
  const [query, setQuery] = useState('q');
  const [weather, setWeather] = useState({});


  const getWeather = (e) => {
    if (e.key === 'Enter') {
      fetch(`${api.base}?q=${query}&units=imperial&APPID=${api.key}`)
        .then(res => res.json())
        .then(data => {
          setWeather(data);
          setQuery('');
          console.log(data);
        });
    }
  }


  return (
    <div className="app tc">
      <div className="search-box">
        <Search onChange={setQuery} getWeather={getWeather} />
      </div>
    </div>
  );
}

// Render it
ReactDOM.render(
  <App />,
  document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

react:如何从其父级更改子组件(功能组件,而不是类组件)的状态?

来自分类Dev

在React中重新渲染子组件或更改子状态

来自分类Dev

在功能组件React中定义状态的最佳实践

来自分类Dev

当父状态在React中更改时停止渲染子组件

来自分类Dev

从React中的子组件更改父状态(无Redux)

来自分类Dev

无法在React子组件中显示状态值

来自分类Dev

更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

来自分类Dev

更改React组件的状态

来自分类Dev

React JS在功能组件中设置状态

来自分类Dev

React-子组件的父类组件功能更改类

来自分类Dev

单击带有React JS中特定键的子组件时更改父组件的状态

来自分类Dev

警告:无法在已卸载的组件上执行React状态更新。在功能组件中

来自分类Dev

使用功能组件React更改父组件的内部功能

来自分类Dev

无法从redux接收react组件中的状态

来自分类Dev

使用react挂钩从父组件更新子组件的状态

来自分类Dev

React:使用异步数据更新父组件的子组件状态

来自分类Dev

如何在React Native中从另一个功能组件更改一个功能组件的状态?

来自分类Dev

React-redux:无法在父状态更改时触发子组件操作

来自分类Dev

在React中,父组件如何通过响应在子组件中执行异步获取功能来设置状态?

来自分类Dev

状态更改后功能组件不会重新呈现[React]

来自分类Dev

从动态创建的子组件更改状态-React

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

React 表示组件无法使用 React 容器从 redux 存储中读取 <input /> 的值

来自分类Dev

我的按钮无法更改另一个React Native组件中的状态

来自分类Dev

按下TextInput组件中的按键时无法更改状态(React Native)

来自分类Dev

React无状态功能组件中的If-else

来自分类Dev

如何在Typescript中编写React无状态功能组件?

来自分类Dev

React:如何在功能组件中强制状态更新?

来自分类Dev

在React组件的功能中访问新的REDUX状态

Related 相关文章

  1. 1

    react:如何从其父级更改子组件(功能组件,而不是类组件)的状态?

  2. 2

    在React中重新渲染子组件或更改子状态

  3. 3

    在功能组件React中定义状态的最佳实践

  4. 4

    当父状态在React中更改时停止渲染子组件

  5. 5

    从React中的子组件更改父状态(无Redux)

  6. 6

    无法在React子组件中显示状态值

  7. 7

    更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

  8. 8

    更改React组件的状态

  9. 9

    React JS在功能组件中设置状态

  10. 10

    React-子组件的父类组件功能更改类

  11. 11

    单击带有React JS中特定键的子组件时更改父组件的状态

  12. 12

    警告:无法在已卸载的组件上执行React状态更新。在功能组件中

  13. 13

    使用功能组件React更改父组件的内部功能

  14. 14

    无法从redux接收react组件中的状态

  15. 15

    使用react挂钩从父组件更新子组件的状态

  16. 16

    React:使用异步数据更新父组件的子组件状态

  17. 17

    如何在React Native中从另一个功能组件更改一个功能组件的状态?

  18. 18

    React-redux:无法在父状态更改时触发子组件操作

  19. 19

    在React中,父组件如何通过响应在子组件中执行异步获取功能来设置状态?

  20. 20

    状态更改后功能组件不会重新呈现[React]

  21. 21

    从动态创建的子组件更改状态-React

  22. 22

    React:子组件未在父状态更改时呈现

  23. 23

    React 表示组件无法使用 React 容器从 redux 存储中读取 <input /> 的值

  24. 24

    我的按钮无法更改另一个React Native组件中的状态

  25. 25

    按下TextInput组件中的按键时无法更改状态(React Native)

  26. 26

    React无状态功能组件中的If-else

  27. 27

    如何在Typescript中编写React无状态功能组件?

  28. 28

    React:如何在功能组件中强制状态更新?

  29. 29

    在React组件的功能中访问新的REDUX状态

热门标签

归档