为了账号安全,请及时绑定邮箱和手机立即绑定

在React中调用API之前从html获取数据属性

在React中调用API之前从html获取数据属性

紫衣仙女 2021-04-16 15:15:21
我正在构建一个React组件来加载博客文章以插入CMS中。我将从HTML的data-name属性获取作者姓名。当我使用url2(作者的硬编码名称)运行此代码时,一切正常。当我使用url1(从数据属性读取的作者姓名)运行代码时,没有任何效果。请帮忙。我有这个HTML:<div id="dataElement" data-name="Peter Smith"></div>这是我的react组件中的代码:constructor(props) {    super(props);    this.state = {       insightsData: [],      loading: true,      authorName: document.getElementById('dataElement').getAttribute('data-name').replace(/ /g, "_")    }  }  componentDidMount(){    let self = this;    let url2 = '/api/Insights/GetAuthorArticles?authorName=Peter_Smith&numRecords=5';    let url1 = `/api/Insights/GetAuthorArticles?authorName=${this.state.authorName}&numRecords=5`;    this.setState({loading:true});    var Promise = require("es6-promise");    Promise.polyfill();    axios.get(url)    .then((response) => {      self.setState({        insightsData: response.data.InsightsResults.Records      }, this.setState({loading:false}));      console.log(response.data.InsightsResults.Records);    });  }
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

html仅在构造函数之后加载。使用react ref尝试一下:


constructor(props) {

    super(props);

    this.state = { 

      insightsData: [],

      loading: true,

    }

  }


  componentDidMount(){

    let self = this;


    let url2 = '/api/Insights/GetAuthorArticles?authorName=Peter_Smith&numRecords=5';

    let url1 = `/api/Insights/GetAuthorArticles?authorName=${document.getElementById('dataElement').getAttribute('data-name').replace(/ /g, "_")}&numRecords=5`;


    this.setState({loading:true});

    var Promise = require("es6-promise");

    Promise.polyfill();

    axios.get(url)

    .then((response) => {

      self.setState({

        insightsData: response.data.InsightsResults.Records

      }, this.setState({loading:false}));

      console.log(response.data.InsightsResults.Records);

    });

  }


查看完整回答
反对 回复 2021-04-22
  • 2 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信