Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React-在呈现ajax返回的数据后调用javascript函数_Reactjs - Fatal编程技术网

Reactjs React-在呈现ajax返回的数据后调用javascript函数

Reactjs React-在呈现ajax返回的数据后调用javascript函数,reactjs,Reactjs,我在react中有以下数据加载器组件。它从API端点获取数据,并用该数据呈现HTML import React, { Component } from "react"; import PropTypes from "prop-types"; class DataLoader extends Component { static propTypes = { endpoint: PropTypes.string.isRequired,

我在react中有以下数据加载器组件。它从API端点获取数据,并用该数据呈现HTML

import React, { Component } from "react";
import PropTypes from "prop-types";
class DataLoader extends Component {

          static propTypes = {
             endpoint: PropTypes.string.isRequired,
             render: PropTypes.func.isRequired,
             callback: PropTypes.func
          };

          state = {
             data: [],
             loaded: false,
             placeholder: "Loading..."
          };

        componentDidMount() 
        {
             fetch(this.props.endpoint)
               .then(response => {
                   if (response.status !== 200) {
                   return this.setState({ placeholder: "error" });
               }

               return response.json();
             })
            .then(data => this.setState({ data: data, loaded: true } ))
            .then(  this.props.callback );
       }

       render() {
           const { data, loaded, placeholder } = this.state;
           return loaded ? this.props.render(data) : <p>{placeholder}</p>;
       }
}

export default DataLoader;
import React,{Component}来自“React”;
从“道具类型”导入道具类型;
类DataLoader扩展组件{
静态类型={
端点:PropTypes.string.isRequired,
渲染:需要PropTypes.func.isRequired,
回调:PropTypes.func
};
状态={
数据:[],
加载:false,
占位符:“正在加载…”
};
componentDidMount()
{
获取(this.props.endpoint)
。然后(响应=>{
如果(response.status!==200){
返回此.setState({占位符:“错误”});
}
返回response.json();
})
.then(data=>this.setState({data:data,loaded:true}))
.然后(this.props.callback);
}
render(){
const{data,loaded,placeholder}=this.state;
返回加载的?this.props.render(数据):{placeholder}

; } } 导出默认数据加载器;
这是App.jsx文件

import React from "react";
import ReactDOM from "react-dom";
import DataLoader from "./DataLoader"; 
import EventDivs from "./EventDivs";


 const App = () => (
     <DataLoader endpoint="api/v1/calendarevents/" 
               render={data => <EventDivs data={data} />}
               callback = {function() {
                   console.log($("#renderedDiv").length);
               }} 
     />
 );


const appid = document.getElementById("app");
appid ? ReactDOM.render(<App />, appid ) : null;
从“React”导入React;
从“react dom”导入react dom;
从“/DataLoader”导入数据加载器;
从“/EventDivs”导入EventDivs;
常量应用=()=>(
}
回调={function(){
console.log($(“#renderdDiv”).length);
}} 
/>
);
const appid=document.getElementById(“应用”);
阿皮德?ReactDOM.render(,appid):null;
console.log($(“#renderdDiv”).length)
获取
0
,因为
此.props.callback
获取的回调


我想知道在Ajax返回的数据呈现后如何调用该函数?

您可以尝试使用setState回调,如:
。然后(data=>this.setState({data:data,loaded:true},this.props.callback))
并删除
。然后(this.props.callback)
@jpacareu是的,我已经尝试过了,但如果运气不好,请看看我做了什么,然后在你的手机上试试issue@jpacareu,谢谢你的例子。它真的帮助了我。