gpt4 book ai didi

javascript - react 类型错误 : x is not a function

转载 作者:行者123 更新时间:2023-12-01 15:50:36 25 4
gpt4 key购买 nike

我从子组件中的父级调用函数“booksRefresh()”,但出现错误:

TypeError: booksRefresh is not a function



我不知道为什么,因为“booksRefresh”是一个函数。有人可以帮我解释为什么会发生这个错误吗?

这是我的代码:
import React, {useState} from "react";
import {Redirect} from "react-router";
import {addBook} from "../api/api";
import {Button} from "react-bootstrap";

const AddBookForm = (booksRefresh) => {
const [title, setTitle] = useState();
const [description, setDescription] = useState();
const [submitted, setSubmitted] = useState(false);

const postRequestHandler = () => {
addBook(title, description);
booksRefresh();
}
...
return (
...
<Button type="submit" onClick={postRequestHandler} variant="outline-success">Add</Button>
</div>
)

家长:
function App({history}) {
...
const [changeInBooks, setChangeInBooks] = useState(0)

const booksRefresh = () => {
let incrementChangeInBook = changeInBooks + 1;
setChangeInBooks(incrementChangeInBook)
}
return (
<div className="App">
<header className="App-header">
...
<Button variant="outline-success" onClick={() => history.push("/new-book")}>
{ADD_BOOK}</Button>
...
</header>
<Switch>
...
<Route path="/new-book" exact render={() =>
<AddBookForm
booksRefresh={booksRefresh}/>
}/>
...
</Switch>
</div>
);
}

export default withRouter(App);

最佳答案

React 函数组件接收的参数是它的 Prop ,它是一个具有每个属性的命名属性的对象。所以你的AddBookForm的参数不应该是 booksRefresh , 但是(按照惯例)props , 然后通过 props.booksRefresh() 使用它:

const AddBookForm = (props) => {
// −−−−−−−−−−−−−−−−−−^^^^^
const [title, setTitle] = useState();
const [description, setDescription] = useState();
const [submitted, setSubmitted] = useState(false);

const postRequestHandler = () => {
addBook(title, description);
props.booksRefresh();
// −−−−−^^^^^^
}

// ...

或者如果它是唯一的 Prop ,你可以使用解构 as adiga shows :
const AddBookForm = ({booksRefresh}) => {

关于javascript - react 类型错误 : x is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59663809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com