【发布时间】:2021-05-22 11:01:30
【问题描述】:
我正在尝试构建一个“DataLoader”组件,该组件通过 Axios 调用 Django Rest API,并出于测试目的在无序列表中显示 API 调用的结果。查询词在父组件中生成并通过 props 传递。
最初,调用 API 时查询术语制造商和型号名称都为空。这部分有效,在初始渲染后,我可以看到一个显示所有预期结果的无序列表。
当父组件通过 props 将新的查询词传递给“DataLoader”组件时,正在执行 render() 函数,我可以看到
<ul><li>Data {this.props.selectedManufacturer}</li><li>Data {this.props.selectedModels}</li></ul>
部分正在正确执行和重新渲染。
但是,似乎没有再次调用带有 Axios 部分的 componentDidMount() 函数。将新的 props 从父组件传递到“DataLoader”组件后,如何让 React 再次调用 Axios?
import React from 'react';
import axios from 'axios';
import { getDefaultNormalizer } from '@testing-library/react';
class DataLoader extends React.Component {
state = {
cars: []
}
componentDidMount(props) {
axios.get(`http://127.0.0.1:8000/firstdraft/api/data?manufacturer=${this.props.selectedManufacturer}&model_name=${this.props.selectedModels}`)
.then(res => {
const cars = res.data;
this.setState({ cars });
console.log(this.state.cars)
}
)
}
render(){
return(
<>
<h1>Top Selling Cars</h1>
<ul>{this.state.cars.map(car => <li> {car.model_name}</li>)}</ul>
<ul><li>Data {this.props.selectedManufacturer}</li><li>Data {this.props.selectedModels}</li></ul>
</>
);
}
}
export default DataLoader;
【问题讨论】:
标签: javascript reactjs django rest axios