首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactJS组件中的常量放置

ReactJS组件中的常量放置
EN

Stack Overflow用户
提问于 2018-02-13 12:03:39
回答 3查看 45.3K关注 0票数 20

来自Java背景,在我看来,下面的常量应该在类中定义为实例变量。但是,这不起作用,如果我想从不同的函数访问一个变量,那么这个常量必须在component类之外定义。有没有人能给我解释一下这个道理?我是不是错过了一些简单的东西?

我从codeacademy.com得到了这段代码。

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';

const redPanda = {
  src: 'https://upload.wikimedia.org/wikipedia/commons/b/b2/Endangered_Red_Panda.jpg',
  alt: 'Red Panda',
  width: '200px',
};

class RedPanda extends React.Component {
  render() {
    return (
      <div>
        <h1>Cute Red Panda</h1>
        <img src={redPanda.src} alt={redPanda.alt} width={redPanda.width} />
      </div>
    );
  }
}

ReactDOM.render(<RedPanda />, document.getElementById('app'));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-13 12:24:32

当你想定义一些常量值,比如样式或图像URL,那么在组件外部定义总是更好。它将成为全局值,并在该文件的每个函数/类中可用。

另一种定义常量的方法是在类实例本身上定义常量,但是该变量将只在类内部可用。这意味着如果在同一个文件中定义了两个类,那么一个类变量在另一个类中将不可用。

如下所示:

代码语言:javascript
复制
class ABC extends React.Component{
   constructor(){
      super();
      this.a = 10;
      this.b = 20;
   }

   render(){
      console.log(this.a, this.b);
      return (....);
   }
}

注意: React类没有类级属性的特性;我们只能定义方法。但是如果你想要定义值,那么你需要使用class transform properties

票数 19
EN

Stack Overflow用户

发布于 2018-02-13 13:03:18

为共享常量变量/对象创建一个constants.js,并从那里导出它以获得更好的可维护性。

代码语言:javascript
复制
export const redPanda = {
  src: 'https://upload.wikimedia.org/wikipedia/commons/b/b2/Endangered_Red_Panda.jpg',
  alt: 'Red Panda',
  width: '200px',
};

import React from 'react';
import ReactDOM from 'react-dom';
import { redPanda } from 'path/to/your/constants/file'; //import from your constants.js

class RedPanda extends React.Component {
  render() {
    return (
      <div>
        <h1>Cute Red Panda</h1>
        <img src={redPanda.src} alt={redPanda.alt} width={redPanda.width} />
      </div>
    );
  }
}

ReactDOM.render(<RedPanda />, document.getElementById('app'));
票数 7
EN

Stack Overflow用户

发布于 2018-02-13 12:21:04

您可以使用类似以下内容:

在另一个类(例如,App.js)中使用以下代码:

代码语言:javascript
复制
export const redPanda = {
  src: 'https://upload.wikimedia.org/wikipedia/commons/b/b2/Endangered_Red_Panda.jpg',
  alt: 'Red Panda',
  width:  '200px'
};

在您的RedPanda组件中,使用以下内容:

import {redPanda} from './App';

最好的方法是在一个文件中定义所有的全局常量,并将其命名为类似common.jsglobal.js的名称,然后从该文件导入其他组件和文件。

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

https://stackoverflow.com/questions/48759250

复制
相关文章

相似问题

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