首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以记录更新的值,但无法使用mobx流呈现它

可以记录更新的值,但无法使用mobx流呈现它
EN

Stack Overflow用户
提问于 2020-01-24 17:25:49
回答 1查看 153关注 0票数 0

我正在尝试进行一个非常简单的api调用,没有任何逻辑,我在控制台中得到一个名为‘all.Althoough’的难以辨认的对象(也不是预期的),我不能在render()方法中返回任何东西,它抛出了一个typeError。我的代码:

代码语言:javascript
复制
`Store:



import {observable, configure, action,flow, computed, decorate, set, runInAction} from 'mobx';
import {observer, inject} from 'mobx-react'
configure({enforceActions:'observed'})

class GenStore {
  verseData = []
  state = "pending"

  getVerseData = flow(function*() {
      this.verseData = []
      this.state = "pending"
      try {
          const response = yield fetch('https://api.quranwbw.com/2/10') 
          const data = response.json()
          this.state = "done"
          this.verseData = data 
      } catch (error) {
          this.state = "error"
      }
  })
}

decorate(GenStore, {state:observable, verseData: observable, getVerseData:action})

  export default new GenStore()

Retrieval:

import {observable, configure, action,flow, computed, decorate, set, runInAction} from 'mobx';
  import { computedFn } from "mobx-utils"
  import {observer, inject} from 'mobx-react'
  import React from 'react'
  import GenStore from './GenStore'

class Show extends React.Component{
    componentDidMount(){
      this.props.GenStore.getVerseData()
    }
    render(){
      console.log(this.props.GenStore.verseData)
    return <h1>{this.props.GenStore.verseData.words[0].word_arabic}</h1>
    }
  }
  export default inject('GenStore')(observer(Show))

尝试呈现时返回错误: TypeError:无法读取未定义的属性'0‘

任何帮助都将不胜感激。提前谢谢。哦,如果您对如何实现此调用有任何建议(如果您认为flow不是选择方法),请建议我,并告诉我如何做得最好。

EN

回答 1

Stack Overflow用户

发布于 2020-08-25 04:18:50

因为getVerseData是异步函数,并且当组件第一次呈现时,verseData是一个空数组(为什么它是空数组呢?它应该是空对象),verseData.words是未定义的。

您可以做几件事来处理它,例如,检查verseData.words是否存在,如果不存在,则显示一些加载器组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59893564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档