在符号链接公共枚举和接口目录(名为 common,在 src/ 文件夹中符号链接)时遇到枚举问题。由于某种原因,从此文件夹导入接口不会触发错误,但导入枚举文件确实会触发错误!
可能有帮助的事情:(1)从 src 文件夹外部导入模块。使用 typescript 的 CRA 仅转换 src/ 下的文件夹,因此我将该文件夹符号链接到 src 内。(2) 我可以复制这些精确的枚举,在 src/ 中的单独文件中声明它们,运行yarn start,并且不会抛出任何错误!符号链接文件夹和 CRA 之间一定存在某种奇怪的交互。
请注意,使用带有 typescript 的 monorepo,为前端使用带有 typescript 模板的 create-react-app 。我再次可以从符号链接的公共文件夹导入接口,没有错误,只有当我导入枚举时才会出现问题。
这是 ../common/enums/Subject.ts 文件的代码:
enum Subject {
Biology = 'BIOLOGY',
Chemistry = 'CHEMISTRY',
Earth = 'EARTH',
Energy = 'ENERGY',
General = 'GENERAL',
Math = 'MATH',
Physics = 'PHYSICS',
Space = 'SPACE'
}
export default Subject;
Run Code Online (Sandbox Code Playgroud)
为了更好地衡量(也许这是我的 tsconfig.json?)这是我的前端 tsconfig.json:
{
"compilerOptions": {
"lib": [
"dom",
"dom.iterable",
"es6"
],
"target": "es6",
"baseUrl": …Run Code Online (Sandbox Code Playgroud) 将节点添加到列表中,但组件未重新渲染。Mobx Chrome 扩展开发工具说这是一个依赖项,但由于某种原因仍然没有反应!
按钮根据节点是否在列表中呈现“添加”或“删除”。除非我移动到另一个组件然后再次打开该组件,否则它不会重新渲染。
纽扣:
@inject("appStore") @observer
class EntityTab extends Component {
...
render() {
return (
...
{/* BUTTONS */}
{ this.props.appStore.repo.canvas.graph.structure.dictionary[id] !== undefined ?
<div onClick={() => this.props.appStore.repo.canvas.graph.function(id)}>
<p>Remove</p>
</div>
:
<div onClick={() => this.props.appStore.currRepo.canvas.otherfunction(id)}>
<p>Add</p>
</div>
}
...
)
}
}
Run Code Online (Sandbox Code Playgroud)
添加按钮呈现,我单击触发的按钮
this.props.appStore.currRepo.canvas.otherfunction(id)
Run Code Online (Sandbox Code Playgroud)
然后我们转到这个函数
@observable graph = new Graph();
...
@action
otherfunction = (idList) => {
// Do nothing if no ids are given
if (idList === null || (Array.isArray(idList) && idList.length === 0)) return;
// If …Run Code Online (Sandbox Code Playgroud)