Javascript 传递给组件的属性返回未定义
我调用了异步方法,我需要它的值在第一个循环中呈现,这样它将被传递到下一个正在呈现的组件,我无法完成id。在返回值之前呈现组件,该值会导致属性在传递时Javascript 传递给组件的属性返回未定义,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我调用了异步方法,我需要它的值在第一个循环中呈现,这样它将被传递到下一个正在呈现的组件,我无法完成id。在返回值之前呈现组件,该值会导致属性在传递时未定义。 知道如何延迟渲染直到返回值吗 代码示例: export default class App extends Component { constructor(props) { super(props); this.state = { valueHere:'' }
未定义。
知道如何延迟渲染直到返回值吗
代码示例:
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
valueHere:''
}
}
componentWillMount() {
axios.post(url, {
username:this.state.username
})
.then((res) => {
this.setState({
valueHere:res.data
})
})
}
render() {
return(
<AnotherComponent
someValue={this.state.valueHere}
/>
)
}
}
export default class AnotherComponent extends Component {
constructor(props) {
super(props);
}
render() {
console.log(this.props.someValue) // undefined
return(
<View/>
)
}
}
导出默认类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
值此处:“”
}
}
组件willmount(){
axios.post(url{
用户名:this.state.username
})
。然后((res)=>{
这是我的国家({
valueHere:res.data
})
})
}
render(){
返回(
)
}
}
导出默认类另一个组件扩展组件{
建造师(道具){
超级(道具);
}
render(){
console.log(this.props.someValue)//未定义
返回(
)
}
}
您可以使用。
因此,基本上,检查该值是否存在,然后呈现组件,否则返回null/任何其他组件
render() {
return( this.props.someValue? <ActualComponeent /> : <div> some loader...</div>)
}
render(){
返回(this.props.someValue?:一些加载器…)
}
您可以使用。
因此,基本上,检查该值是否存在,然后呈现组件,否则返回null/任何其他组件
render() {
return( this.props.someValue? <ActualComponeent /> : <div> some loader...</div>)
}
render(){
返回(this.props.someValue?:一些加载器…)
}
它对我来说不起作用,因为我需要渲染它,因为有时这个值会被忽略,我也需要渲染组件,然后在那里使用相同的代码,而不是返回null,返回任何默认组件@obiwankenoobi更新了代码,但它只会返回默认组件。调用已发出>尚未响应>默认组件渲染>响应已返回>组件已使用空propNope渲染..当您调用setState
方法时,它将使用api的响应重新渲染,因此此时它将渲染ActualComponent
这是显示加载程序的地方。我看到有问题的代码正在执行一个API调用,该调用通常会获取一些数据。因此,上面答案中的虚拟组件可以是加载程序。调用api…它对我来说不起作用,因为我需要它被呈现,因为有时这个值无论如何都是未定义的,我需要组件被呈现这些时间,然后在那里使用相同的代码,而不是返回null,返回任何默认组件@obiwankenoobi更新了代码,但它只会返回默认组件。调用已发出>尚未响应>默认组件渲染>响应已返回>组件已使用空propNope渲染..当您调用setState
方法时,它将使用api的响应重新渲染,因此此时它将渲染ActualComponent
这是显示加载程序的地方。我看到有问题的代码正在执行一个API调用,该调用通常会获取一些数据。因此,上面答案中的虚拟组件可以是加载程序。正在调用api。。。。