Я работаю в среде Sandbox IDE, и у меня проблема с компонентом ProductList, и я пытался добавить функции в приложение. js.
Я передаю функцию в качестве реквизита в компоненте ProductList, но я я получаю сообщение об ошибке TypeError: this.props.changeCategory не является функцией. Я написал код как "onClick={() => this.props.changeCategory(category)}
" Я описал эту функцию в приложении. js как
changeCategory = category => {
this.setState({ currentCategory: category.categoryName });
};
Мое сообщение об ошибке:
TypeError
_this2.props.changeCategory is not a function
onClick
/src/components/ProductList.js:21:40
18 | <ListGroup>
19 | {this.state.categories.map(category => (
20 | <ListGroupItem
> 21 | onClick={() => this.props.changeCategory(category)}
| ^
22 | key={category.categoryId}
23 | >
24 | {" "}
ProductList. js
import React, { Component } from "react";
import { ListGroup, ListGroupItem } from "reactstrap";
import "../styles.css";
class ProductList extends Component {
state = {
categories: [
{ categoryId: 1, categoryName: "Beverages" },
{ categoryId: 2, categoryName: "Sunny Side UP" },
{ categoryId: 3, categoryName: "Whats sup" }
]
};
render() {
return (
<div>
<h3> {this.props.uc} </h3>
<ListGroup>
{this.state.categories.map(category => (
<ListGroupItem
onClick={() => this.props.changeCategory(category)}
key={category.categoryId}
>
{" "}
{category.categoryName}{" "}
</ListGroupItem>
))}
</ListGroup>
<form className="f">{this.props.currentCategory}</form>
</div>
);
}
}
export default ProductList;
Приложение. js
import React, { Component } from "react";
import "./styles.css";
import Navi from "./components/Navi";
import Cl from "./components/CategoryList";
import { Container, Row, Col } from "reactstrap";
import Pl from "./components/ProductList";
class App extends Component {
state = { currentCategory: " " };
changeCategory = category => {
this.setState({ currentCategory: category.categoryName });
};
render() {
let titleCategory = "List One";
let CategoryInfo = { uc: "List Two" };
return (
<div className="App">
<Container>
<Row>
<Navi />
</Row>
<Row>
<Col xs="4">
<Pl
uc={titleCategory}
changeCategory={this.state.changeCategory}
/>
</Col>
<Col xs="8">
<Cl info={CategoryInfo} />
</Col>
</Row>
</Container>
</div>
);
}
}
export default App;
Может кто-нибудь подсказать, где я не так делаю? Спасибо всем.