如何从另一个函数访问 class 组件内的函数?
how to access to a function inside a class component from another function?
我是 React 的新手,我正在尝试编写一个使用 API 的应用程序。代码更广泛,所以我删掉了问题部分并放在这里,我不知道这是否有可能做到,所以如果有人知道如何去做,那将是一个很大的帮助。
-说明.
当我调用 deleteProduct()
并通过 props 传递给外部函数 listTemplate.js
时,内部 getProducts()
给了我这个错误:
Unhandled Rejection (TypeError): this.getproducts is not a function
export default class test extends Component {
constructor(props) {
super(props);
this.state = {
products: [],
};
}
async componentDidMount() {
this.getproductos();
}
async getproducts() {
const res = await axios.get("http://localhost:5000/api/productos");
this.setState({ products: res.data });
//Set in products info like {products:[name: 'shoes', model:'XXL', price:'90' ]}.
}
async deleteProduct(id) {
await axios.delete("http://localhost:5000/api/productos/" + id); //Delete selected product.
this.getproductos(); //get actualized products array.
}
render() {
const { products } = this.state;
return (
<div className="col-md-6">
<ListTemplate products={products} delBtn={this.deleteProduct} /> //here i pass through listTemplate deleteProduct() function.
</div>
);
}
}
/******************************************************************************/
在另一个 .js 文件中我有这个:
export default function ListTemplate(props) {
const { products } = props.product;
return (
<div className="container">
<div className="header">
<h2>Product List:</h2>
</div>
{products.map((product) => (
<div class="body" key={product._id}>
<span>{product.name}</span>
<span>{product.model}</span>
<span>${product.price}</span>
<button
type="button"
class="btn btn-danger btn-sm"
onClick={(e) => {
props.delBtn(product._id);
}}
>
Delete Item
</button>
</div>
))}
</div>
);
}
我的问题是 deleteProduct()
完成并尝试 getProduct()
。爆炸.
尝试创建一个类似
的箭头方法
deleteProduct = async (id) => {
...
}
我是 React 的新手,我正在尝试编写一个使用 API 的应用程序。代码更广泛,所以我删掉了问题部分并放在这里,我不知道这是否有可能做到,所以如果有人知道如何去做,那将是一个很大的帮助。
-说明.
当我调用 deleteProduct()
并通过 props 传递给外部函数 listTemplate.js
时,内部 getProducts()
给了我这个错误:
Unhandled Rejection (TypeError): this.getproducts is not a function
export default class test extends Component {
constructor(props) {
super(props);
this.state = {
products: [],
};
}
async componentDidMount() {
this.getproductos();
}
async getproducts() {
const res = await axios.get("http://localhost:5000/api/productos");
this.setState({ products: res.data });
//Set in products info like {products:[name: 'shoes', model:'XXL', price:'90' ]}.
}
async deleteProduct(id) {
await axios.delete("http://localhost:5000/api/productos/" + id); //Delete selected product.
this.getproductos(); //get actualized products array.
}
render() {
const { products } = this.state;
return (
<div className="col-md-6">
<ListTemplate products={products} delBtn={this.deleteProduct} /> //here i pass through listTemplate deleteProduct() function.
</div>
);
}
}
/******************************************************************************/
在另一个 .js 文件中我有这个:
export default function ListTemplate(props) {
const { products } = props.product;
return (
<div className="container">
<div className="header">
<h2>Product List:</h2>
</div>
{products.map((product) => (
<div class="body" key={product._id}>
<span>{product.name}</span>
<span>{product.model}</span>
<span>${product.price}</span>
<button
type="button"
class="btn btn-danger btn-sm"
onClick={(e) => {
props.delBtn(product._id);
}}
>
Delete Item
</button>
</div>
))}
</div>
);
}
我的问题是 deleteProduct()
完成并尝试 getProduct()
。爆炸.
尝试创建一个类似
的箭头方法deleteProduct = async (id) => {
...
}