小编ali*_*ill的帖子

关键字“enum”被保留:symlinked文件夹,在create-react-app中的src/目录下,带有typescript,无法正确转译

在符号链接公共枚举和接口目录(名为 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)

enums symlink typescript create-react-app

8
推荐指数
0
解决办法
862
查看次数

嵌套可观察更改时组件不会重新渲染

将节点添加到列表中,但组件未重新渲染。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)

observable reactjs mobx mobx-react

6
推荐指数
1
解决办法
2150
查看次数