javascript - 将值传递给使用 Hooks 的组件

标签 javascript reactjs

通过组件传递函数的最佳方式是什么,以及如何回调?

这是ListContainer.jsx

import React, { useEffect, useState } from 'react';

// Internal
import Results from '../Results';
import List from '../List';


const ListContainer = () => {

  const [results, setResults] = useState([]);

  useEffect(() => {
    fetchData();
  }, []);

  const fetchData = (countryISO3) => {
    // fetch data and store in countries
  };

  return (
    <>
      <Results />
      {results && (
        <>
          <List items={results} />
        </>
      )}
    </>
  );
}

export default ListContainer;

这是 Results.jsx 组件。



const Results = (props) => {

  const [results, setResults] = useState([]);

  const handleChange = (event) => {
    // useCallback(event.target.value) ?
  };

  const loadResults = () => {
    // fetch results;
  };

  useEffect(() => {
    loadResults();
  }, []);

  return (
    <>
      {results.map(result => (
        {result.name}
      ))}
    </>
  );
}

export default Results;

最佳答案

因此,您需要将 fetch 函数从 ListContainer 向下传递到Results组件,以便可以在 onSelect 中调用它事件。

更改<Results /><Results fetch={fetchData} />

然后在你的Results中组件,handleChange应该看起来像这样:

const handleChange = (event) => {
  setOrigin(event.target.value)
  if (event.length.value.length > 0) props.fetch(event.target.value)
};

这应该可以解决您的问题。

您可以通过消除 fetch 来进一步改进此实现。函数,但这超出了这个问题的范围。

关于javascript - 将值传递给使用 Hooks 的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61162839/

相关文章:

javascript - HTTP 请求的嵌入式凭据替代方案

javascript - 我们可以在点击时删除 HTML 元素的边框吗?但保持边界焦点

javascript - 带方括号的 jQuery 输入选择器 - iPhone

javascript - 如何使用 2 个或多个具有不同位置和 texCoords 的纹理?

javascript - Metronic 主题图表和图形

javascript - 如何在material-ui中将日期对象转换为字符串? ReactJS。在表格上显示日期

reactjs - Antd - validateFields 仅检查当前表单步骤

reactjs - 如何反转将项目添加到 Final-form/react-final-form-arrays 中的字段的顺序,以便最新的位于第一个

javascript - 从 URL 中删除 '%20' - React-Router

reactjs - 如何在 NextJS Image 组件中运行图像的 onLoad 函数