我不确定发生了什么变化,可能与Babel有关,但是当我使用以下内容时,例如UserControler_1
未定义,我开始出现错误。
UserControler.ts
export function signOut() { console.log("Sign Out") }
Page.tsx
import * as React from "react;
import { signOut } from "./UserControler";
import { TouchableWithoutFeedback, Text } from "react-native";
class Page extends React.Component {
_signOut = () => signOut()
render() {
return (
<TouchableWithoutFeedback onPress={this._signOut}>
<Text>Sign Out</Text>
</TouchableWithoutFeedback>
)
}
}
上述代码会报错,报错信息如下:
UserControler_1未定义。
有时候错误信息更为具体,例如:找不到变量signOut。
最奇怪的是,如果我将代码更改为以下内容,它就可以正常运行。
import * as React from "react;
import { signOut } from "./UserControler";
class Page extends React.Component {
render() {
return (
<TouchableWithoutFeedback onPress={() => signOut}>
<Text>Sign Out</Text>
</TouchableWithoutFeedback>
)
}
}
我很困惑
我的tsconfig文件
{
"compilerOptions": {
"moduleResolution": "node",
"module": "es6",
"target": "es6",
"lib": ["es7"],
"allowJs": true,
"checkJs": true,
"jsx": "react-native",
"removeComments": true,
"outDir": "./dist",
"typeRoots": ["node_modules/@types", "./typings"],
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"allowSyntheticDefaultImports": true,
"strict": true
},
"exclude": ["./node_modules", "./android", "./ios", "./__tests__", "./dist", "./__mocks__"],
"include": ["./src"]
}
这将构建到 dist 文件夹中,babel 从中提取其文件,从而使应用程序工作,我的 babelrc 文件。
{
"presets": ["react-native"]
}
signOut [undefined]
赋值给了onClick
,这意味着它什么也不做。在第一个示例中,你正在执行signOut()
,这意味着它会出现错误,因为signOut
不存在。这并不是解决问题的答案,只是说明了为什么一个有问题,而另一个没有问题 :-) - DoXicKsignOut
。 - Ilja