javascript - React - 将 JSON 对象传递给 const

标签 javascript reactjs

我正在尝试将一个 json 对象放入一个 const 中。我很乐意用 vars 做这件事,比如

{this.props.user.map(function(user){...

但是对于无状态常量,我不太确定。

我哪里出错了?

import React from 'react';

var user;
$.getJSON("./json/user.json", function(json){
    user = json;
});

const User = ({ user }) => (

  <div className="user">
    <div className="avatar">
      <img src={user.avatarSrc} height="30" />
    </div>  
    <div className="user-full-name">
      {user.fullName}
    </div>
  </div>
);

User.PropTypes = {
  avatarSrc: React.PropTypes.string,
  fullName: React.PropTypes.string
};

export default User;

链接到我的应用程序的更详细结构:

React - passing JSON objects to all stateless child components

最佳答案

你编写这个组件的方式不是无状态的(user 是有状态的),所以你不应该使用 stateless functional component , 你应该使用 stateful component class :

class User extends React.Component {
  static propTypes = {
    user: React.PropTypes.object
  };
  state = {};
  componentDidMount() {
    $.getJSON("./json/user.json", (json) => {
      this.setState({user: json});
    });
  }
  render() {
    let user = this.state.user;
    return (
      <div className="user">
        <div className="avatar">
          { user && <img src={user.avatarSrc} height="30" /> }
        </div>  
        <div className="user-full-name">
          { user && user.fullName }
        </div>
      </div>
    );
  }
}

Here it is working in CodePen.

当然,您没有让这个组件有状态。您可以将状态移动到父组件(如顶级 View )并将 user 作为 props 向下传递。那么您可以改用无状态功能组件。

关于javascript - React - 将 JSON 对象传递给 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309201/

相关文章:

javascript - 如何在组件内使用 React 自定义环境变量

c# - .NET 5 + 自定义 appsettings.json - SPA 默认页面中间件无法返回默认页面

reactjs - 使用 react 和 typescript 从 docker 容器获取环境变量

javascript - ReactJS 状态没有改变

javascript - 类型错误 : Cannot set property '_eventListeners' of undefined

javascript - 如何创建具有多个 resultCallback 函数的单个 cloudinary 实例

javascript - 如何获取动态生成元素的id属性?

javascript - React.js : How to run window. open() 连续多次?

javascript - 使用此获取输入选择器

reactjs - 如何停止开 Jest 运行测试常量文件夹