小编Pau*_*erg的帖子

在 useEffect 中,不提供依赖数组和提供空数组有什么区别?

我认为useEffectHook 在每次渲染后运行,如果提供了一个空的依赖数组:

useEffect(() => {
  performSideEffect();
}, []);
Run Code Online (Sandbox Code Playgroud)

但是这和下面的有什么区别呢?

useEffect(() => {
  performSideEffect();
});
Run Code Online (Sandbox Code Playgroud)

注意[]结尾的缺失。linter 插件不会发出警告。

reactjs react-hooks use-effect

65
推荐指数
3
解决办法
2万
查看次数

项目必须列出所有文件或使用“包含”模式

我在 VSCode 中看到此警告:

\n\n

VSCode 警告

\n\n

这是抛出 ts 警告的行:

\n\n
import packageJson from "../package.json";\n
Run Code Online (Sandbox Code Playgroud)\n\n

奇怪的是,构建和检查该项目运行良好:

\n\n
$ tsc --project .\n\xe2\x9c\xa8  Done in 1.16s.\n
Run Code Online (Sandbox Code Playgroud)\n\n
$ tslint --config ../../tslint.json --project .\n\xe2\x9c\xa8  Done in 1.59s.\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是 VSCode 解析器引起的警告,还是我的文件有问题tsconfig.json

\n\n
// tsconfig.json\n{\n  "exclude": [\n    "node_modules"\n  ],\n  "extends": "../../tsconfig.json",\n  "files": [\n    "package.json"\n  ],\n  "include": [\n    "src/**/*"\n  ],\n  "compilerOptions": {\n    /* Basic Options */\n    "outDir": "dist",\n    /* Module Resolution Options */\n    "baseUrl": ".",\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

typescript tslint

46
推荐指数
7
解决办法
6万
查看次数

useReducer 中第三个参数的目的是什么?

文档

[init, the 3d argument] 允许您提取用于计算 reducer 之外的初始状态的逻辑。这对于稍后响应动作重置状态也很方便。

和代码:

function init(initialCount) {
  return { count: initialCount };
}

function reducer(state, action) {
  switch (action.type) {
    ...
    case 'reset':
      return init(action.payload);
    ...
  }
}

function Counter({initialCount}) {
  const [state, dispatch] = useReducer(reducer, initialCount, init);
  ...
}
Run Code Online (Sandbox Code Playgroud)

为什么我会在重用常量时这样做initialState

const initialState = {
  count: 5,
};

function reducer(state, action) {
  switch (action.type) {
    ...
    case 'reset':
      return initialState;
    ...
  }
}

function Counter({initialCount}) {
  const [state, dispatch] = useReducer(reducer, …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks use-reducer

21
推荐指数
3
解决办法
8264
查看次数

GitHub Actions 在推送到所有分支时运行

容易在任何推送或拉取请求上运行 GitHub 操作:

# Triggers the workflow on push or pull request events
on: [push, pull_request]
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将运行限制为针对特定基本引用打开的拉取请求,同时允许在所有分支上运行怎么办?

我想过这个:

on:
  push:
    branches:
      - "*"
  pull_request:
    branches:
      - "develop"
      - "staging"
Run Code Online (Sandbox Code Playgroud)

但它没有用。我把这个 Action 添加到了一个特性分支,GitHub 没有接。

我的球有什么问题吗?为什么“*”不起作用?

continuous-integration glob github-actions

15
推荐指数
2
解决办法
4520
查看次数

更漂亮的 vscode “r 不是函数”

在 vscode 中使用 prettier 有一段时间了,但它最近停止工作,我不确定这是他们的错误还是我的错误配置。

["INFO" - 02:54:03] Loaded module 'prettier@1.19.1' from '/Users/paulrberg/.nvm/versions/node/v10.17.0/lib/node_modules/prettier'
["INFO" - 02:54:03] Formatting using 'prettier-eslint'
["ERROR" - 02:54:03] Error formatting document.
r is not a function
TypeError: r is not a function
    at /Users/paulrberg/.vscode/extensions/esbenp.prettier-vscode-3.13.0/dist/extension.js:1:352891
    at t.default.safeExecution (/Users/paulrberg/.vscode/extensions/esbenp.prettier-vscode-3.13.0/dist/extension.js:1:353582)
    at t.default.<anonymous> (/Users/paulrberg/.vscode/extensions/esbenp.prettier-vscode-3.13.0/dist/extension.js:1:352865)
    at Generator.next (<anonymous>)
    at s (/Users/paulrberg/.vscode/extensions/esbenp.prettier-vscode-3.13.0/dist/extension.js:1:347571)
Run Code Online (Sandbox Code Playgroud)

visual-studio-code prettier

9
推荐指数
1
解决办法
1514
查看次数

Cargo 的 build 和 rustc 命令有什么区别?

我是 Rust 的新手,我刚刚通过cargo new my_project. 我注意到cargo 提供了这两个命令行选项:

  • build:编译本地包及其所有依赖项
  • rustc:编译一个包及其所有依赖项

我认为后者可用于编译我机器上的任何项目,而前者只能在当前工作目录中使用。那是对的吗?还有其他区别吗?不带附加参数运行这两个命令会给我完全相同的输出。

rust rust-cargo

9
推荐指数
2
解决办法
825
查看次数

当第二个参数用 'a 注释时,第一个参数的隐式生命周期是多少?

在阅读Rust Book 的第 12.4 章时,我偶然发现了这个函数:

pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
    vec![]
}
Run Code Online (Sandbox Code Playgroud)

我理解为什么在没有contents参数和返回值的显式生命周期注释的情况下代码不能编译-生命周期省略规则不适用于具有至少两个借用参数的函数。

但我很好奇这个query论点的隐含生命周期注释是什么。我可以想到两种情况:

// Scenario 1
pub fn search<'a>(query: &'a str, contents: &'a str) -> Vec<&'a str> {
    vec![]
}
Run Code Online (Sandbox Code Playgroud)
// Scenario 2
pub fn search<'a, 'b>(query: &'b str, contents: &'a str) -> Vec<&'a str> {
    vec![]
}
Run Code Online (Sandbox Code Playgroud)

两种情况query都可以编译,因此获得生命周期'a'b. 哪一个是正确的?

lifetime rust

9
推荐指数
1
解决办法
105
查看次数

如何使用 Yarn v3 安装本地包?

我尝试使用 Yarn v3 安装本地包,结果撞到了墙上。这是我尝试过的所有事情:

  1. 跑步yarn add file:../hardhat-packager
  2. 跑步yarn add ../hardhat-packager
  3. 手动添加"hardhat-packager": "file:../hardhat-packager"进去package.json
  4. 手动添加"hardhat-packager": "../hardhat-packager"进去package.json

上述所有情况都会导致 Yarn 在安装步骤中卡住,如下图所示。我等了五分钟多,并确保我的互联网连接速度很快。

我知道有一个链接包的选项,但这并不是我想要的。我不需要符号链接,我想要复制实际的包文件。

我怎样才能做到这一点?我正在使用 Yarn v3.2.0

纱线卡住

node.js package.json yarnpkg yarnpkg-v3

9
推荐指数
1
解决办法
7447
查看次数

通过nvm升级了节点和npm,但旧节点仍用于全局软件包

我使用节点9.3.0已有很长时间了,但是最近我迁移到了10.12.0。一切正常,当我这样做时node -vnpm -v我得到了正确的版本:

Paul-Bergs-Macbook:node paulrberg$ node -v
v10.12.0
Paul-Bergs-Macbook:node paulrberg$ which node
/Users/paulrberg/.nvm/versions/node/v10.12.0/bin/node
Paul-Bergs-Macbook:node paulrberg$ npm -v
6.4.1
Paul-Bergs-Macbook:node paulrberg$ which npm
/Users/paulrberg/.nvm/versions/node/v10.12.0/bin/npm
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行任何npm命令时,将使用旧版本。那是:

Paul-Bergs-Macbook:node paulrberg$ npm i truffle -g
/Users/paulrberg/.nvm/versions/node/v9.3.0/bin/truffle -> /Users/paulrberg/.nvm/versions/node/v9.3.0/lib/node_modules/truffle/build/cli.bundled.js
+ truffle@4.1.14
added 81 packages from 311 contributors in 1.715s
Run Code Online (Sandbox Code Playgroud)

和:

npm list -g --depth=0
/Users/paulrberg/.nvm/versions/node/v9.3.0/lib
??? truffle@4.1.14
Run Code Online (Sandbox Code Playgroud)

不知道这是否是仍指向最新版本的bash代码,但我似乎找不到任何证明。运行env并检查9.3.0环境变量不会产生任何结果。

到目前为止,我做了什么:

  • 使用以下命令删除节点9.3.0 nvm uninstall 9.3.0
  • 删除nvm并重新启动计算机后,重新安装nvm
  • nvm reinstall-with-packages
  • 删除~/.nvmrc并设置10.12.0在那里
  • 检查我是否有来自自制软件的重叠节点,但我没有问题可能是什么?

node.js npm node-modules nvm

8
推荐指数
1
解决办法
1389
查看次数

嵌套的 Suspense 组件会导致顺序加载还是并行加载?

我知道 Suspense 组件是 React-ian代码拆分方法,它使网页加载速度更快。现在,假设您有一个像这样的组件层次结构:

<App>
  <Suspense fallback={<FirstLoader/>}>
    <OuterWrapper>
      <Suspense fallback={<SecondLoader/>}>
        <InnerWrapper>
          {content}
        </InnerWrapper>
      </Suspense>
    </OuterWrapper>
  </Suspense>
</App>
Run Code Online (Sandbox Code Playgroud)

首先假设只有InnerWrapper延迟加载,在第二种情况下它们都是延迟加载的。

React 是在加载InnerWrapper后延迟OuterWrapper加载,还是同时加载?具体来说,是否在加载第一个组件后推迟渲染第二个 Suspense 的回退。

asynchronous reactjs code-splitting react-suspense

8
推荐指数
1
解决办法
1571
查看次数