【问题标题】:Pulling Data from JSON with React-Native使用 React-Native 从 JSON 中提取数据
【发布时间】:2018-09-26 17:15:02
【问题描述】:

这张图有什么问题吗? :-)

我正在尝试从我的 wordpress JSON 对象中提取值。

我不能使用 React-Native 以正确/正确的方式解决它们。

有人可以指导我如何形成正确的控制台日志语句吗?

就目前而言,变量“theMediaLink”在控制台日志中出现“未定义”。 :-(

  state={
    data:[]
  }

  fetchData = async() => {
    const response = await
    //response
    fetch('http://example.com/wp-json/wp/v2/posts/')
    //posts
    const posts = await response.json();
    this.setState({data:posts});

    const theMediaLink = `https://example.com/wp-json/wp/v2/media/` + `${this.state.data.featuredmedia}`;
    console.log('theMediaLink_value: ', theMediaLink);
  }

我应该补充一点,当我稍后使用 FLATLIST 来提取帖子时,提取正在检索数据。我的问题是我一定是打错电话了,但是怎么回事?

【问题讨论】:

  • 当使用await我不认为你需要做response.json()
  • 另一件事,setState 是异步的。但是您可以在状态更新后使用它的回调参数来运行代码:setState({key:value}, () => {...})
  • 请检查 this.state.data.featuredmedia 的值。做console.log(this.state.data.featuredmedia) 我觉得是未定义的。
  • 未定义。 :-(

标签: json wordpress reactjs react-native


【解决方案1】:

这更多的是理解 React 而不是 React Native 的问题。

试试这个:

fetchData = async () => {
  const URL = 'http://example.com/wp-json/wp/v2/posts/'

  const response = await fetch(URL)

  const posts = await response.json();

  return this.setState({ data : posts }, () => {
    const { data } = this.state

    const theMediaLink = `https://example.com/wp-json/wp/v2/media/${ data.featuredmedia }`;

    console.log('theMediaLink_value: ', theMediaLink);
  });
}

由于setState 是异步的,您将无法立即看到状态更新,这就是callback 的用途。

更多信息on how to setState asynchronously and use its value after right here

【讨论】:

  • 明白了。行。我绕过了关于它是异步的状态的小细节。哎呀。好吧,这很好地清理了我的代码。它并没有那么糟糕,但在这种形式下它更直接。我试图在上面设置这些常量的唯一原因是因为我似乎无法形成正确的调用来获取 json 对象 > 'wp:featuredmedia',其中 : 对调用造成了严重破坏。每次我这样做时,RN都会感到不适。如图所示 >stackoverflow.com/questions/52519548/…
猜你喜欢
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多