静态对象是否与 React 中的 ES6 类一起使用?
class SomeComponent extends React.Component {
render() {
// ...
}
}
React.statics = {
someMethod: function() {
//...
}
};
someMethod
当我这样做时,像上面这样的东西给了我未定义的方法SomeComponent.someMethod()
静态对象是否与 React 中的 ES6 类一起使用?
class SomeComponent extends React.Component {
render() {
// ...
}
}
React.statics = {
someMethod: function() {
//...
}
};
someMethod
当我这样做时,像上面这样的东西给了我未定义的方法SomeComponent.someMethod()
statics
仅适用于React.createClass
. 只需将该方法声明为静态类方法:
class SomeComponent extends React.Component {
static someMethod() {
//...
}
render() {
// ...
}
}
关于
React.statics = { ... }
您实际上是statics
在React
对象上创建属性。该属性不会神奇地扩展您的组件。
尽管statics
仅适用于React.createClass
,但您仍然可以使用 ES6 表示法编写静态方法。如果您使用的是 ES7,那么您也可以编写静态属性。
您可以通过以下方式在 ES6+ 类中编写静态:
class Component extends React.Component {
static propTypes = {
...
}
static someMethod(){
}
}
或者像这样在课外:
class Component extends React.Component {
....
}
Component.propTypes = {...}
Component.someMethod = function(){....}
如果你想像前者那样写,那么你必须stage: 0
在 Babel 上进行设置(因为它是实验性的)。
无需实例化组件即可访问静态。通常它们不是那么有用,但有一些特殊情况。例如,当您通过执行 ACTION PERFORM 离开当前页面时进入路由,然后通过静态方法可以保持/询问用户他是否真的想离开页面。例如:
exampleComponent= React.createClass({
statics:{
willTransitionFrom: function(transition,component){
// check any state here or value Aasked the user.
}
}
});
它公开 willTransitionTo 和 willTransitionFrom 生命周期方法。两者都是特别有用的静态,因为您可以在实例化组件之前实际取消转换。
停止。只需声明一个类而不扩展 React.Component 就可以了。
class YourStaticClass {
static YourMethod(){
}
}
export default YourStaticClass;
在其他类中,您可以简单地导入您的类并触发该功能
import YourStaticClass from "whatever";
...
YourStaticClass.YourMethod();
...
statics
仅适用于 React 组件,请查看文档。