簡體   English   中英

如何將常量放入React組件中,並進行重組

[英]How to put constants in React components, wrapped in recompose

如何編寫特定於組件的常量STATUS,可以設置this.state.status 我認為問題在於這種情況。 如果this.STATUS硬編碼為字符串,則可以使用。

import { compose } from 'recompose';
import React, { Component } from 'react';

class TestComponent extends Component {
    static propTypes = {};

    // can you put the STATUS constant on the component?
    static STATUS = {
        SENT: 'SENT',
        ERROR: 'ERROR',
    };

    state = { status: null };

    // functions cannot use this.STATUS
    f = () => {
        this.setState({status: this.STATUS.SENT});
        // undefined is not an object (evaluating '_this.STATUS.SENT')
    }

    render() {
        const { msg } = this.statusMessage();
        return ();
    }

}

export default compose(
  withRouter,
  connect(() => ())
)(TestComponent);

因為STATUS是該類的靜態屬性 ,所以您必須按以下方式訪問它:

this.constructor.STATUS.SENT

如果您將其聲明為實例的屬性,則可以通過this.status訪問它:

STATUS = {
  SENT: 'SENT',
  ERROR: 'ERROR',
};

或通過吸氣劑

get STATUS() {
  return {
    SENT: 'SENT',
    ERROR: 'ERROR'
  };
}

為什么不直接將SENTError設置為狀態?

像這樣 :

this.setState({
 SEND: 'SENT'
 ERROR: 'ERROR'
 status: null
});

然后像這樣直接設置狀態:

f = () => {
    const { SENT } = this.state
    this.setState({status: SENT});
}

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM