【问题标题】:How to transport a function to a functional component in react如何在反应中将功能传输到功能组件
【发布时间】:2021-12-08 13:08:23
【问题描述】:

我在 react 和 typescript 方面有点新,并且在将函数从文件 App.tsx 传输到名为 WordAddingForm.tsx 的函数组件时遇到了一些问题 提前致谢!

这是我的App.tsx 文件:

import React, {FC, useState} from 'react';
import WordAddingForm from './components/WordAddingForm';
import {observer} from "mobx-react-lite";
import WordService from "./services/WordService"

const App: FC = () => {

  const {store} = useContext(Context)
  const [words, setWords] = useState<IWord[]>([])
  
  async function getWords() {
    try {
      const response = await WordService.fetchWords()
      setWords(response.data)
    } catch (e) {
      console.log(e)
    }
  }

  return (
    <div>
      <div><WordAddingForm/></div>
    </div>
  )
}

export default observer(App);

我需要将函数getWords 传输到组件 这是我的WordAddingForm.tsx 文件:

import React, {FC, useContext, useState} from 'react';
import {Context} from "../index";
import {observer} from "mobx-react-lite";
import WordService from '../services/WordService';

const WordAddingForm: FC = () => {

    const [word, setWord] = useState<string>('')
    const [wordT, setWordT] = useState<string>('')
    const [instance, setInstance] = useState<string>('')
    const [instanceT, setInstanceT] = useState<string>('')
    const {store} = useContext(Context)

    function clear():void {
        setWord('')
        setWordT('')
        setInstance('')
        setInstanceT('')
    }

    async function createWord(word:string, wordT:string, instance:string, instanceT:string) {
        try {
          const response = await store.createWord(word, wordT, instance, instanceT)
          console.log(response)
          clear()
        } catch (e) {
          console.log(e)
        }
      }

    return (
        <div>
            <input
            onChange={e => setWord(e.target.value)}
            value={word}
            type="text"
            placeholder="word"
            />
            <input
            onChange={e => setWordT(e.target.value)}
            value={wordT}
            type="text"
            placeholder="word translation"
            />
            <input
            onChange={e => setInstance(e.target.value)}
            value={instance}
            type="text"
            placeholder="instance of using this word"
            />
            <input
            onChange={e => setInstanceT(e.target.value)}
            value={instanceT}
            type="text"
            placeholder="instance translation"
            />
            <button
            onClick={() => {
                createWord(word, wordT, instance, instanceT)
                clear()
                }}>
                add word +
            </button>
        </div>
    )
}

export default observer(WordAddingForm)

我需要将函数 getWords 传输到 &lt;WordAddingForm/&gt; 以在此组件中使用它,并在向数据库添加新单词后再次更新单词列表 喜欢&lt;WordAddingForm props={getWords}/&gt;&lt;WordAddingForm {getWords}/&gt; 没有帮助

【问题讨论】:

    标签: javascript reactjs typescript react-hooks components


    【解决方案1】:

    &lt;WordAddingForm getWords={getWords} /&gt;

    这就是你将它传递给你的组件的方式。在WordAddingForm内部使用时,必须通过参数接收props对象:

    interface Props {
      getWords: () => Promise<any>
    }
    const WordAddingForm: FC<Props> = (props) => {
    // use your function as props.getWords()
    }
    

    【讨论】:

    • 哦,是的,这行得通!非常感谢)
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多