我正在使用Webstorm
并编写了一个React组件,我的代码如下所示:
async onDrop( banner, e ) {
banner.classList.remove( 'dragover' );
e.preventDefault();
const file = e.dataTransfer.files[ 0 ], reader = new FileReader();
const { dispatch } = this.props;
const result = await this.readFile( file, reader );
banner.style.background = `url( ${ result } ) no-repeat center`;
dispatch( addLayer( file ) );
return false;
}
@isImage( 0 )
readFile( file, reader ) {
reader.readAsDataURL( file );
return new Promise( function ( resolve, reject ) {
reader.onload = ( event ) => resolve( event.target.result );
reader.onerror = reject;
} );
}
onDragOver( banner ) {
banner.classList.add( 'dragover' );
return false;
}
Webstorm的代码检查向我建议Method can be static
了该onDragOver
方法。我的问题是:
将方法作为静态方法有什么真正的好处,或者这种建议毫无用处?
是的,调用静态函数时不需要对象的实例。您所需要的只是对构造函数的引用:
class Foo {
static bar() { console.log("foo"); }
}
Foo.bar(); // outputs "foo" to console
无需在new Foo()
任何地方。
按照约定,当您实际需要实例的状态(读取状态或写入状态)时,应使用实例方法。
检查将告诉您,当您拥有其中没有原型this
(因此不需要实例)的原型/类方法时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句