javascript - React Prop 没有价值,无法控制台日志
问题描述
我正在尝试以道具的形式将 API 数据传递给 App.js。我可以通过控制台记录 API 数据,这样我就知道它已经通过了。当我将它分配给道具时,虽然我得到 ResultList.js:28 Uncaught (in promise) TypeError: this.props.openState is not a function。这是正确的语法吗?抱歉,如果这是一个幼稚的问题,我对这一切都很陌生。
我试过用几种不同的方式分配它,但我对道具的不熟悉阻碍了我。我知道 API 正在返回数据,因为我可以通过控制台将其注销。
````import { Helmet } from "react-helmet";
````import zipcodes from "zipcodes";
````import SearchBar from "../../components/SearchBar/SearchBar";
````import ResultsDisplay from "../../components/ResultDisplay/ResultDisplay";
````import Nav from "../../components/Nav/Nav"
````import API from "../../API";
````import Footer from "../../components/Footer/Footer";
````import "./ResultsList.css";
````class ResultList extends React.Component {
````state = {
````openState: [],
````proPublica: []
````}
````onSearchSubmit = zipcode => {
````const data = zipcodes.lookup(zipcode);
````const state = data.state;
````const lat = data.latitude.toFixed(2);
````const lon = data.longitude.toFixed(2);
````const openStateQuery = "lat=" + lat + "&long=" + lon;
````API.getOpenStateData("api/v1/legislators/geo/?" + ````openStateQuery).then(OSresponse => {
````this.props.openState(OSresponse.data)//making the data a prop so ````we can pass it to app.js
````console.log("OSresponse:", OSresponse.data);
````console.log(this.props.openState)
});
}
```` render() {
```` return (
```` <div>
```` <Helmet>
```` <style>{'body { background-color: #f0f0f0;}'}</style>
````</Helmet>
````<Nav />
````<SearchBar
````onSubmit={this.onSearchSubmit}
````placeholder="Enter a zip code..."
````/>
````<div className="container">
````<div className="results-container">
````I removed this divs content for sake of brevity
```` </div>
````</div>
````<Footer />
````</div>
````)
````}
````}
````export default ResultList;
I would expect the same response as
console.log("OSresponse:", OSresponse.data);
解决方案
您还没有真正提供足够的细节或代码来解决问题所在,但听起来您还没有将正确的道具传递给这个反应组件。您需要将一个函数App.js
作为一个名为的道具传递给该文件openState
例如
// App.js
openState = (data) => {
// do something with the data
this.setState({ data })
}
render() {
return <MyComponent openState={this.openState} />
}
推荐阅读
- kubernetes - Kong-ingress-controller CrashLoopBackOff : "kong-proxy" 被禁止
- jquery - 使用 Stackable.js 的表过滤器 - (如何复制数据属性?)
- tsql - 循环遍历表,同时记录不断添加到表中
- python-3.x - 用高斯预测 MNIST 数据集中的类——不同参数的相同预测误差?
- python - 如何在python中获取浮动文本文件?
- node.js - 一些请求没有进入节点服务器
- influxdb - HAproxy 为每个服务器单独的授权标头
- php - PHP语言中的“?array”是什么意思?
- php - 禁用日期选择器中已保存在 mysql 数据库中的日期
- python - 更改登录设备