Javascript “this”不是代码拆分中的函数
我不知道如何处理代码中的“this”问题。 在我使用代码拆分之前,一切都很正常 我试图在点击按钮后导入组件。所以我删除了组件willmount 在代码拆分之前:Javascript “this”不是代码拆分中的函数,javascript,reactjs,transloadit,Javascript,Reactjs,Transloadit,我不知道如何处理代码中的“this”问题。 在我使用代码拆分之前,一切都很正常 我试图在点击按钮后导入组件。所以我删除了组件willmount 在代码拆分之前: import React, {PureComponent} from 'react'; import Uppy from 'uppy/lib/core'; class Shopper extends PureComponent { constructor (props) { super(props); } c
import React, {PureComponent} from 'react';
import Uppy from 'uppy/lib/core';
class Shopper extends PureComponent {
constructor (props) {
super(props); }
componentWillMount () {
this.uppy2 = new Uppy({
autoProceed: false,
onBeforeUpload: (files) => {
const updatedFiles = Object.assign({}, files)
Object.keys(updatedFiles).forEach(fileId => {
let origName = updatedFiles[fileId].name;
let metaName = updatedFiles[fileId].meta.name;
/* some code */
if (fileDir) {
this.uppy2.setFileMeta(uploadId, { name: `${addBeforeName}-${metaName}.${updatedFiles[fileId].extension}` })
/* some more codes */
} else {
/* some more code */
}
})
return updatedFiles
}
})
代码拆分后:
import React, {PureComponent} from 'react';
import Uppy from 'uppy/lib/core';
class Shopper extends PureComponent {
constructor (props) {
super(props); }
componentWillMount () {
this.uppy2 = new Uppy({
autoProceed: false,
onBeforeUpload: (files) => {
const updatedFiles = Object.assign({}, files)
Object.keys(updatedFiles).forEach(fileId => {
let origName = updatedFiles[fileId].name;
let metaName = updatedFiles[fileId].meta.name;
/* some code */
if (fileDir) {
this.uppy2.setFileMeta(uploadId, { name: `${addBeforeName}-${metaName}.${updatedFiles[fileId].extension}` })
/* some more codes */
} else {
/* some more code */
}
})
return updatedFiles
}
})
代码拆分后,我遇到以下错误:
未捕获类型错误:\ this2.uppy2.setFileMeta不是函数
您正在将uppy2分配给承诺,而不是类实例:
import('uppy/lib/core').then((uppydata) => {
this.uppy2 = new uppydata({
autoProceed: false,
onBeforeUpload: (files) => {
const updatedFiles = Object.assign({}, files)
Object.keys(updatedFiles).forEach(fileId => {
let origName = updatedFiles[fileId].name;
let metaName = updatedFiles[fileId].meta.name;
if (fileDir) {
this.uppy2.setFileMeta(uploadId, {
name: `${addBeforeName}-${metaName}.${updatedFiles[fileId].extension}`
})
// ...
我应该仍然使用这个.uppy2.setFileMeta?因为现在我得到了:'uppy2'被分配了一个值,但从未使用过,没有未使用过-vars@Jaz更新了我的答案,很抱歉,如果您想保持与以前相同,您应该使用this.uppy2