当前位置: 首页 > 面试题库 >

无法在axios回调中访问此错误

陈畅
2023-03-14
问题内容

有了一个有点烦人的提款机。我设法编写了以下代码,该代码从url下载JSON并将其显示在屏幕上:

export default class Appextends React.Component {

constructor(props) {
    super(props);
    this.state = {
      data: [],
    }
  }

  componentWillMount() {

    axios.get(//url//)
      .then(function (response) {
        localStorage.setItem('data', JSON.stringify(response.data));
        //this.setState({data: response.data}); -- doesnt work
      })
      .catch(function (error) {
        console.log(error);
      })
  }

  render() {
    let items = JSON.parse(localStorage.getItem('data'));
    return (
      <ul>
        {items.map(v => <li key={v.id}>{v.body}</li>)}
      </ul>
    )

  };
}

但是 …这很奇怪,因为如果我想将接收到的json存储在状态对象的数据中,但是当我试图这样做时,它表示状态变量实际上不存在…

这是什么意思?由于它是 组件的WILL挂载 功能,因此状态尚不存在,所以这就是为什么我无法将接收到的数据存储在那里的原因?

有什么办法可以解决这个问题?非常感谢

PS :在这种情况下,使用本地存储是可行的解决方案,但是质量很低。

在那儿


问题答案:

问题不是状态不存在,而是您没有使用正确的状态上下文。

您需要bind使用axios callback function,否则其this内部将引用其自身的上下文,而不是react组件的上下文

axios.get(//url//)
  .then( (response) => {
    this.setState({data: response.data});
  })
  .catch( (error) => {
    console.log(error);
  })

并在渲染

render() {
    return (
      <ul>
        {this.state.data.map(v => <li key={v.id}>{v.body}</li>)}
      </ul>
    )

  };


 类似资料:
  • 请注意:我已经检查了SO上的其他问题,虽然我可以消除错误,但它还有其他问题。 下面是我现有的代码: 我的适配器类: 修改代码查看各种答案: 现在,我没有得到错误,但是每次都被调用两次,并且recyclerview中的视图每次都在刷新。我做错了什么?请参阅logcat输出:

  • 我遇到toast错误它将进入我在清单中正确地授予了摄像头权限 这是我的kt代码。 帮忙解决这个问题?

  • 问题内容: 我认为这是异步的问题,但我不知道解决方案。 我的问题是,如果我尝试在函数外部访问它,则返回undefined,并且我不知道如何在页面上显示表格。 问题答案: 问题是Selling.find是异步的,可能在执行this.table = table时尚未完成。尝试类似以下的方法。 这将确保在获取结果并填充表之后才使用表。

  • 遥不可及!更改:false,msg:SSH错误:无法将数据发送到远程主机。确保可以通过ssh访问此主机,“不可访问”:true 主持人: ansible.cfg 我正在使用executeshell运行Jenkins的剧本`

  • 正在尝试将代码更新为Selenium 3。x、 在尝试运行测试时,我不断遇到一个错误: 同样的代码曾经在运行测试时工作,我真的不知道它在哪里或为什么会出现这样一个奇怪的错误。我似乎找不到任何人以前写过的任何东西,所以我希望stackoverflow社区可以帮助我解决这个问题。 以下是生成此错误的代码:

  • 我正在通过 Windows(10) 启动时的批处理文件启动我的应用程序。这是我在批处理文件中的内容 - 当windows启动时,我得到了 无法访问文件.jar 然而,问题是在这个错误消息之后,应用程序仍然在启动中,并且运行良好。正在访问jar但我仍然无法访问jar错误的原因是什么,如何避免它?找不到这个特定案例的任何答案。