Statyka Reacta z klasami ES6

Czy obiekt statyki działa z klasami ES6 w Reaccie?

class SomeComponent extends React.Component {

  render() {
    // ...
  }

}

React.statics = {
  someMethod: function() {
    //...
  }
};

Coś takiego jak wyżej daje mi niezdefiniowaną metodę someMethod kiedy robię SomeComponent.someMethod()

Author: niftygrifty, 2015-04-03

4 answers

statics działa tylko z React.createClass. Po prostu zadeklaruj metodę jako statyczną metodę klasy:

class SomeComponent extends React.Component {

  static someMethod() {
    //...
  }

  render() {
    // ...
  }

}

Odnośnie

React.statics = { ... }

Tworzysz dosłownie statics właściwość na React obiekcie. Ta właściwość nie rozszerza magicznie twojego komponentu.

 53
Author: Felix Kling,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-03 14:04:02

Chociaż statics działa tylko dla React.createClass, nadal można pisać statyczne metody w notacji ES6. Jeśli używasz ES7, możesz również zapisać właściwości statyczne.

Możesz pisać statyki wewnątrz klas ES6+ w ten sposób:

class Component extends React.Component {
    static propTypes = {
    ...
    }

    static someMethod(){
    }
}

Lub poza klasą w ten sposób:

class Component extends React.Component {
   ....
}

Component.propTypes = {...}
Component.someMethod = function(){....}

Jeśli chcesz napisać to jak to pierwsze, to musisz ustawić stage: 0 na Babel (od czasu jego eksperymentalnego).

 22
Author: Jonathan Huang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-21 06:33:29

Statyka może być dostępna bez konieczności tworzenia instancji komponentu. zazwyczaj nie są one zbyt przydatne, ale jest kilka szczególnych przypadków. Na przykład do routingu po opuszczeniu bieżącej strony z wykonaniem akcji wykonaj następnie za pomocą metod statycznych możesz przytrzymać / zapytać użytkownika, czy naprawdę chce opuścić stronę. Na przykład:

exampleComponent= React.createClass({
statics:{
        willTransitionFrom: function(transition,component){
            // check any state here or value Aasked the user.
        }
    }
});

Eksponuje metody willtransition do i willtransition z cyklu życia. oba są szczególne jest przydatne jako statyczne jak ty może faktycznie anulować przejście przed utworzeniem instancji komponentu.

 1
Author: AKD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-20 11:55:45

statics działa tylko dla komponentów Reactowych, check docs .

 -5
Author: Roman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-03 13:37:31