You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+TypeScript开发中如何向函数式组件同时传递对象和函数

解决方案

步骤1:修改WordItem组件的Props类型定义

你需要先扩展原有IWord类型,加入getWords函数的类型声明,调整组件的入参定义:

import React, {FC, useContext} from "react"
import { IWord } from "../../../models/IWord"
import {Context} from "../../../index";

// 扩展Props类型
interface WordItemProps extends IWord {
  // 声明getWords函数的类型
  getWords: () => Promise<void>
}

const WordItem: FC<WordItemProps> = (props) => {
    const {store} = useContext(Context)
    // 可以按需解构使用传入的属性和函数
    const { id, word, wordT, instance, instanceT, getWords } = props

    async function deleteWord () {
        await store.deleteWord(id)
        // 比如删除完成后调用刷新列表
        await getWords()
    }

    return (
        <div key={id}>
            <div>
                <div>{word}</div>
                <div>{wordT}</div>
            </div>
            <div>
                <div>{instance}</div>
                <div>{instanceT}</div>
                <button onClick={() => deleteWord()}>delete</button>
            </div>
        </div>
    )
}

export default WordItem

步骤2:修正父组件传参写法

你之前的传参写法多了不必要的大括号,直接按如下格式传递即可,属性传值和对象展开可以同时使用,展开运算符不需要额外包裹大括号:

{words.reverse().map(word => <WordItem getWords={getWords} {...word}/>)}

内容的提问来源于stack exchange,提问作者bluepuper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:45:00