理解导入语句和其他人的旧代码

时间:2018-11-19 23:33:00

标签: javascript reactjs redux

我正试图了解2048 via his github repo.游戏的Dimitar Valchanov React代码

他还写了一篇关于它的博客,但他希望一个人自己阅读代码,而更愿意在this blog中解释代码的结构。 (*尽管他已经在代码中包含了注释以使其更易于理解)。

在尝试理解他的代码时,我面临的主要问题是第一,我经验不足第二,他的代码已经老了

在查看他的代码时,我发现了一些我无法理解的东西。

[问题:1] ,他在导入statements in this file时曾使用过类似的方法

import {Board, Result} from "js/components";
import * as Actions from "js/actions/actions";

他如何才能正确js并返回到src,然后遍历给定的存储库。

如果我去过,我会写这样的东西  从“ ../components”导入Board;  从“ ../components”导入结果;

问题:“ js”在这里是什么意思,他如何能够使用单个语句即import {Board, Result} from "js/components";

导出两个不同的文件

[问题:2] In the same file他写了这样的东西

this.actions = bindActionCreators(Actions, this.props.dispatch);

我原本打算一起分发所有redux动作,但是我似乎错了,因此我无法理解this.actions里面的内容

因此这行也没有意义

 getChildContext() {
    return {
      actions: this.actions
    };
  }

问题:有人可以解释一下上面发生的事情吗?

1 个答案:

答案 0 :(得分:0)

问题1:

import语句不是旧语法或不建议使用。这只是从ES6模块导入代码的另一种方法。

import {Board, Result} from "js/components";

import Board from "../components/Board";
import Result from "../components/Result";

都是导入代码的完全有效的方法。由您决定如何执行。

这是解释Named Exports vs Default Exports的链接。

js/components只是指向其文件here的目录路径

问题2:

this.actions中的内容是许多包装在dispatch(...)中的函数,这些函数准备被分派到Redux,以便在调用时对存储执行操作。

通过以下方法

getChildContext() {
    return {
      actions: this.actions
    };
}

它基本上只会返回this.actions。

此代码并不古老,在解释bindActionCreators method时仍在Redux网站上使用。