gpt4 book ai didi

javascript - 调用子组件时未定义数据 Prop

转载 作者:行者123 更新时间:2023-12-01 00:47:31 25 4
gpt4 key购买 nike

我在将数据传递到子组件时遇到问题。

import React, { Component } from 'react'
import { Text, View, ScrollView } from 'react-native'
import axios from 'axios'
import ClaimStatus from '../table/ClaimStatus'


export class ClaimsEW extends Component{

render(){
console.log(this.props.claim_approval_summary)
return(
<ScrollView>

<View style={{elevation:5, backgroundColor:'#fff', margin:15}}>
<ClaimStatus newprops={this.props.claim_approval_summary} />
</View>
</ScrollView>
)
}
}


class ClaimsAMC extends Component{
render(){
return(
<View>
<Text>
class two
</Text>
</View>
)
}
}



export default class ClaimsLevelTwo extends Component {

constructor(props) {
super(props)

this.state = {
id: '',
param_oem: '',
dropdown_arg: '',
claim_approval_regions: [],
claim_approval_summary: [],
}
}

async componentDidMount(){

const param_oem = this.props.navigation.getParam('value');
const auth_id = this.props.navigation.getParam('auth_token');
const dropdown_arg = this.props.navigation.getParam('arg');


await this.setState({
param_oem,
id: auth_id,
dropdown_arg,
fetched: true
});


var headers = {
'Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'x-access-token',
'x-access-token': this.state.id
}

axios.post('http://bi.servassure.net/api/ClaimApprovalSummary', {
oem: this.state.param_oem,
}, {headers:headers})
.then(res => {

let claim_approval_regions = res.data.region;
let claim_approval_summary = res.data.data[0];



this.setState({
claim_approval_regions :claim_approval_regions,
claim_approval_summary : claim_approval_summary
});

console.log(this.state.claim_approval_regions)
}).catch(err => console.log(err));

}
render() {
const state_values = this.state;
console.log(state_values)
return (
(this.state.dropdown_arg === 'ew' ? (Object.keys(state_values).length > 0 ? <ClaimsEW {...state_values} /> : null) : <ClaimsAMC/>)
)
}
}

当我打电话ClaimStatus newprops={this.props.claim_approval_summary} />时类内的组件 ClaimsEW , Prop 变得未定义。我什至尝试在没有新子组件的情况下打印值,只给出 a 但仍然给出相同的结果。

如果我没有在类中传递任何新的组件 View ClaimsEW , console.log(this.props.claim_approval_summary)在控制台中打印 props 值。调用 ClaimStatus newprops={this.props.claim_approval_summary} /> ,在以下组件中打印未定义的 props。

我收到的数据是对象形式,因此我将其转换为数组以将其进一步映射到 <ClaimStatus/>组件。

请帮忙解决这个问题。

最佳答案

我认为更干净的代码可以解决您的问题,我已经清理了其中的一些部分,也许这会有所帮助

import React, { Component } from 'react'
import { Text, View, ScrollView } from 'react-native'
import axios from 'axios'
import ClaimStatus from '../table/ClaimStatus'


export class ClaimsEW extends Component{
render(){
console.log(this.props.claim_approval_summary)
return(
<ScrollView>
<View style={{elevation:5, backgroundColor:'#fff', margin:15}}>
<ClaimStatus newprops={this.props.claim_approval_summary} />
</View>
</ScrollView>
)
}
}


class ClaimsAMC extends Component{
render(){
return(
<View>
<Text>
class two
</Text>
</View>
)
}
}



export default class ClaimsLevelTwo extends Component {
constructor(props) {
super(props);
this.state = {
id: '',
param_oem: '',
dropdown_arg: '',
claim_approval_regions: [],
claim_approval_summary: [],
}
}

async componentDidMount(){
const { getParam } = this.props.navigation;
const param_oem = getParam('value');
const auth_id = getParam('auth_token');
const dropdown_arg = getParam('arg');

const headers = {
'Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'x-access-token',
'x-access-token': auth_id
};

const result = await axios.post('http://bi.servassure.net/api/ClaimApprovalSummary', {
oem: param_oem,
}, {headers:headers});


const claim_approval_regions = res.data.region;
const claim_approval_summary = res.data.data[0];

this.setState({
param_oem,
id: auth_id,
dropdown_arg,
fetched: true,
claim_approval_regions,
claim_approval_summary,
});


}

render() {
const state_values = this.state;
const { dropdown_arg } = state_values;
return (
// having dropdown_arg means the length is always > 0
(dropdown_arg === 'ew' ? <ClaimsEW {...state_values} />) : <ClaimsAMC/>)
)
}
}

关于javascript - 调用子组件时未定义数据 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com