Javascript 无法访问子组件中的所有道具数据
从父组件(主组件)传递完整的API调用时,我无法将其作为子组件(属性)中的道具访问。子组件中的道具看起来好像尚未完全获取 i、 e.props.housingData.address将在子组件中生成数据,但props.housingData.address不会。错误消息: 错误:“无法访问未定义的行。”Javascript 无法访问子组件中的所有道具数据,javascript,arrays,reactjs,api,react-props,Javascript,Arrays,Reactjs,Api,React Props,从父组件(主组件)传递完整的API调用时,我无法将其作为子组件(属性)中的道具访问。子组件中的道具看起来好像尚未完全获取 i、 e.props.housingData.address将在子组件中生成数据,但props.housingData.address不会。错误消息: 错误:“无法访问未定义的行。” ``` 导出默认类Home扩展React.Component{ ... componentDidMount(){ 变量设置={ “异步”:true, “跨域”:正确, “url”: "https
```
导出默认类Home扩展React.Component{
...
componentDidMount(){
变量设置={
“异步”:true,
“跨域”:正确,
“url”:
"https://realtor.p.rapidapi.com/properties/v2/list-
租金?
排序=相关性和城市=纽约%20纽约%20城市和州\u代码=纽约&限额=200&偏移量=0“,
“方法”:“获取”,
“标题”:{
“x-rapidapi-host”:“realtor.p.rapidapi.com”,
“x-rapidapi-key”:“API_密钥”
}
}
$.ajax(设置).done(响应=>{
//要对其应用响应迭代的数组
让dataArray=[];
//
//**我相信问题就在这里**
for(设i=0;i{dataLoaded&&this.state?
: }
)
}
}
```
导出默认函数属性(道具){
...
让propData=props.housingData
const propertyInfo=info.slice(0,showItems).map((信息,项目)=>(
{info.address}
))
我已更正此问题。在将API响应发送到子组件之前,必须将其分配给父组件(主)中的对象。(属性)
这是对子组件上的条件渲染集的补充,可确保api中的所有数据都已获取并分配给道具,以便在子组件中使用
export default class Home extends React.Component {
...
$.ajax(settings).done(response=>{
let dataArray = []; <--- // Set new empty array
for(let i = 0; i < response.properties.length; i++){
let obj = {}; <---- // Set Object
obj = {...response.properties[i]} <---- // Assigned response to object
dataArray.push(obj); <--- // Pushed to new array
}
this.setState({housingData: dataArray}); <--- // Send to state
});
导出默认类Home.Component{
...
$.ajax(设置).done(响应=>{
让dataArray=[];在从api获取数据之前,不要呈现子组件,或者对响应中的每个键进行适当的检查。顺便说一句,您的问题标题误导了主体。我感谢您的反馈。稍后将尝试再次使用它。此外,我正在寻找编辑标题的方法。第一次张贴在此处。再次感谢。
export default class Home extends React.Component {
...
$.ajax(settings).done(response=>{
let dataArray = []; <--- // Set new empty array
for(let i = 0; i < response.properties.length; i++){
let obj = {}; <---- // Set Object
obj = {...response.properties[i]} <---- // Assigned response to object
dataArray.push(obj); <--- // Pushed to new array
}
this.setState({housingData: dataArray}); <--- // Send to state
});