如何将值onClick从不同组件分配给React中的另一个组件

菲尔

我想做的事 :

  • 当我点击我的按钮,即SearchNavbar.js我想要分配变量中的搜索文本urlQuery,所以我可以把它当作道具Episodes.js组件
  • 最终目标是将urlQuery从Navbar.js某种方式传递Episodes.js组件,以便我可以查询REST API

我如何实现所需的行为

App.js

import React, { useState } from 'react';
import './App.css'
import Episodes from './components/Episodes/Episodes'
import CustomNavbar from './components/Navbar/Navbar'
import Pagination from './components/Pagination/Pagination'
function App() {

  const [postsPerPage] = useState(20);
  const [currentPage, setCurrentPage] = useState(1);

  const url=`https://rickandmortyapi.com/api/episode?page=${currentPage}`
  let urlQuery = `https://rickandmortyapi.com/api/episode?name=${SEARCH TEXT HERE}`

  const paginate = pageNumber => setCurrentPage(pageNumber);

  return (
    <div>
      <CustomNavbar />
      <Episodes
      urlQuery={urlQuery}
      url={url}
      />
      <Pagination
        postsPerPage={postsPerPage}
        totalPosts={36}
        paginate={paginate}
      />
    </div>
  );
}

export default App;

Navbar.js

import React from 'react';
import Navbar from 'react-bootstrap/Navbar';
import Form from 'react-bootstrap/Form';
import Button from 'react-bootstrap/Button';
import FormControl from 'react-bootstrap/FormControl';

const customNavbar = () => {

  return (
    <Navbar bg="light" expand="lg">
      <Navbar.Brand href="#home">Rick And Morty</Navbar.Brand>
      <Form inline>
        <FormControl type="text" placeholder="Search" />
        <Button>Search</Button>
      </Form>
    </Navbar>
  );
}
export default customNavbar

编辑

根据佐伊布的建议,抛出此错误

Failed to compile.

./src/components/Navbar/Navbar.js
  Line 14:48:  Unexpected use of 'event'  no-restricted-globals

Search for the keywords to learn more about each error.   
拉迪胡克

App.js

import React, { useState, useEffect } from 'react';
import './App.css'
import Episodes from './components/Episodes/Episodes'
import CustomNavbar from './components/Navbar/Navbar'
import Pagination from './components/Pagination/Pagination'
function App() {

  const [postsPerPage] = useState(20);
  const [currentPage, setCurrentPage] = useState(1);
  const [userSearchValue, setUserSearchValue] = useState('');

  const [url, setUrl] = useState(``);
  const [urlQuery, setUrlQuery] = useState(``)

  useEffect(() => {
    setUrl(`https://rickandmortyapi.com/api/episode?page=${currentPage}`)
  }, [currentPage]);

  useEffect(() => {
    setUrlQuery(`https://rickandmortyapi.com/api/episode?name=${userSearchValue}`)
  }, [userSearchValue])

  const paginate = pageNumber => setCurrentPage(pageNumber);

  const handleButtonClick = (searchValue) => {
      setUserSearchValue(searchValue);
  }

  return (
    <div>
      <CustomNavbar
      onButtonClick={handleButtonClick}
      />
      <Episodes
      urlQuery={urlQuery}
      url={url}
      />
      <Pagination
        postsPerPage={postsPerPage}
        totalPosts={36}
        paginate={paginate}
      />
    </div>
  );
}

export default App;

Navbar.js

import React, { useState } from 'react';
import Navbar from 'react-bootstrap/Navbar';
import Form from 'react-bootstrap/Form';
import Button from 'react-bootstrap/Button';
import FormControl from 'react-bootstrap/FormControl';

const customNavbar = ({ onButtonClick }) => {

    const [searchValue, setSearchValue] = useState('');

  return (
    <Navbar bg="light" expand="lg">
      <Navbar.Brand href="#home">Rick And Morty</Navbar.Brand>
      <Form inline>
        <FormControl type="text" placeholder="Search" value={searchValue} onChange={(e) => setSearchValue(e.target.value)} />
        <Button onClick={() => onButtonClick(searchValue)}>Search</Button>
      </Form>
    </Navbar>
  );
}
export default customNavbar

这里的重要部分是将handleButtonClick函数传递给子组件(导航栏)。这样,您可以随时在子组件中调用该父函数(即,当用户单击“提交”按钮时)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Gatsby中的children变量是什么?如何将其分配给另一个组件?

HTML - 如何将文本值分配给另一个属性的值?

如何将公式的值(包含变量)分配给另一个变量

如何在React.js中从另一个组件调用不同组件的ComponentDidMount()

如何将Angular @Input值分配给另一个变量并填充到子代中?

如何将文本框值分配给 wpf 中的另一个类

如何将另一个文件中的变量分配给类常量?

如何将一个枚举值强制转换/分配给另一个枚举

如何将值从一个对象分配给另一个

如何将值从一个哈希集分配给另一个?

Angular:如何从不同模块中的另一个组件调用组件方法

如何将一个JavaScript文件中的变量分配给另一个JS File?

如何从不同组件的一个组件中查找div-Vue.js

如何将值数组作为键分配给另一个值数组?

JavaScript:如何将button元素的值分配给另一个div元素?

我如何将列表中的元素分配给 Python 中列表中的另一个元素

单击 Sveltekit 中的不同组件后更改另一个组件的 prop

如何从组件中获取变量值并将其分配给 vuejs 中另一个组件中的变量

如何将变量列表分配给另一个列表

如何将另一个列表分配给“通过引用传递”的列表?

如何将共享指针的引用分配给另一个共享指针

如何将“isVisibility”值作为道具传递给另一个组件(React)

如何将特定字段的值分配给 Firestore Swift 中同一文档内的另一个字段?

在R中,如果行和列的值匹配,如何将一列的内容分配给另一个?

如何将包含空格的变量分配给 KSH 中的另一个变量

如何将一个模型的字段的值分配给另一模型的字段?

如何将表值发送到稍后在 React 中可见的另一个组件?

如何将一个char中的值分配给一个指针?

React-如何将API数据从一个组件传递到另一个js文件中的另一个组件?