Javascript 将ajax数据传递给子级
如何从ajax调用请求的父数据传递到子组件? 例如,我有这样的代码Javascript 将ajax数据传递给子级,javascript,ajax,reactjs,async-await,frontend,Javascript,Ajax,Reactjs,Async Await,Frontend,如何从ajax调用请求的父数据传递到子组件? 例如,我有这样的代码 class Parent extends React.Component { constructor(props) { super(props); this.state = {}; } async componentDidMount() { const response = await fetch(); this.setState(response.data); } re
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
async componentDidMount() {
const response = await fetch();
this.setState(response.data);
}
render() {
return (
<ChildComponent data={this.state} /> // data={}
);
}
}
类父级扩展React.Component{
建造师(道具){
超级(道具);
this.state={};
}
异步组件didmount(){
const response=等待获取();
this.setState(response.data);
}
render(){
返回(
//数据={}
);
}
}
这里的问题是ChildComponent将在获取数据之前装载,所以我将在ChildComponent中获取空对象数据 检查数据是否可用
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
async componentDidMount() {
const response = await fetch();
this.setState(response.data);
}
render() { // Return if response is Object
return Object.keys(this.state).length > 0
? <ChildComponent data={this.state} /> // data={}
: <div>Loading...</div>
}
render() { // Return if response is Array
return this.state.length > 0
? <ChildComponent data={this.state} /> // data={}
: <div>Loading...</div>
}
}
类父级扩展React.Component{
建造师(道具){
超级(道具);
this.state={};
}
异步组件didmount(){
const response=等待获取();
this.setState(response.data);
}
render(){//如果响应是对象,则返回
返回Object.keys(this.state).length>0
?//数据={}
:正在加载。。。
}
render(){//如果响应为数组,则返回
返回this.state.length>0
?//数据={}
:正在加载。。。
}
}
仅当存在一些数据时,才可以决定渲染子对象。
为此,可能不使用数据替换整个状态,而是创建一个单独的键。如果您需要在之后添加一些其他状态,则会更容易
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
async componentDidMount() {
const response = await fetch();
this.setState({ data: response.data });
}
render() {
const { data } = this.state;
return data ? <ChildComponent data={data} /> : null;
}
}
类父级扩展React.Component{
建造师(道具){
超级(道具);
this.state={};
}
异步组件didmount(){
const response=等待获取();
this.setState({data:response.data});
}
render(){
const{data}=this.state;
返回数据?:空;
}
}
@Axnyff他正在通过完整状态,所以他知道自己在做什么,我们只是给他提供伪代码是的,我读他的初始代码太快了,删除了我的评论,你说得对,但这对我有什么帮助?我总是会得到“加载…”@netseac State会得到数据它会检查状态的长度并显示数据,我的代码会工作如果你的响应是Object我也会更新数组的代码,是的。这很有效。我以前就是不明白为什么。当状态更改时,始终再次响应调用渲染。这就是它起作用的原因。现在我明白了。非常感谢你。