javascript - 如何在 react 类之外访问纯 js 值

标签 javascript reactjs asynchronous

我想在 React 类之外访问一个 js 函数值。我该怎么做。

这是我要访问的函数

export function listConnectionNames() {
  let data = []
  let res = window.gapi.client.people.people.connections.list({
     'resourceName': 'people/me',
     'pageSize': 10,
     'personFields': 'names,genders,birthdays'
   }).then(function(response) {
     var connections = response.result.connections;
     if (connections && connections.length > 0) {
       for (let i = 0; i < connections.length; i++) {
         let item = {
           "resourceName": connections[i].resourceName,
           "name": connections[i].names ? connections[i].names[0]["displayName"] : "",
           "gender": connections[i].genders ? connections[i].genders[0]["formattedValue"] : "",
           "birthday": connections[i].birthdays ? connections[i].birthdays[0]["value"] : ""
         }
        data.push(item)
       }
       return data
     }
   })
   return res
}

这是我想使用从那个 js 函数获得的 res 值的 React 类。

class App extends Component {
  constructor(props) {
    super(props)
    this.state = {

我尝试使用 window.res 使它成为一个全局变量,但是 react 类无法获取该值,因为它是一个异步调用。我应该更改什么来修复它

最佳答案

只是为了补充其他答案,这里有一个更彻底的答案,它允许您在 promise 解决后状态更新时看到第二次渲染的数据。

更新列表连接名称

export function listConnectionNames() {
  return window.gapi.client.people.people.connections.list({
    'resourceName': 'people/me',
    'pageSize': 10,
    'personFields': 'names,genders,birthdays'
  }).then(function(response) {
    let data = []
    const connections = response.result.connections;
    if (connections && connections.length > 0) {
      for (let i = 0; i < connections.length; i++) {
        let item = {
          "resourceName": connections[i].resourceName,
          "name": connections[i].names ? connections[i].names[0]["displayName"] : "",
          "gender": connections[i].genders ? connections[i].genders[0]["formattedValue"] : "",
          "birthday": connections[i].birthdays ? connections[i].birthdays[0]["value"] : ""
        }
        data.push(item);
      }
      return data;
    }
  });
}

示例 React 组件

import React from 'react';
import { listConnectionNames } from './where-ever-the-list-connection-name-file-is.js';

class App extends React.Component {
  state = {
    data: null
  };
  componentDidMount() {
    listConnectionNames().then((data) => {
      this.setState({
        data,
      });
    });
  };
  render() {
    console.log(this.state.data);
    return <div>Hello World</div>;
  };
}

关于javascript - 如何在 react 类之外访问纯 js 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52019762/

相关文章:

asynchronous - 异步写入文件

javascript - setState 函数如何工作?

javascript - 移除多余的 CSS 动画

javascript - React 渲染 <img> 标签

python - Requests 1.0.4 异步请求

javascript - 使用异步等待自动 try catch 路由器 Controller

javascript - tinyMCE - 将 RemoveFormat 限制为格式列表

javascript - 序列化 hasMany 为 "Where"

javascript - 使用 react 实现页脚不停留在底部

javascript - 使用 reactjs 渲染原始 html