小编Ani*_*ift的帖子

useState是同步的吗?

过去,我们曾明确警告过调用setState({myProperty})是异步的,并且this.state.myProperty直到回调或下一个render()方法才有效。

使用useState,如何在显式更新状态后获取状态的值?

钩子如何工作?据我所知,setter函数useState不接受回调,例如

const [value, setValue] = useState(0);
setValue(42, () => console.log('hi callback');
Run Code Online (Sandbox Code Playgroud)

不会导致回调运行。

在旧世界中,我的另一种解决方法是(e.g. this.otherProperty = 42)在类上挂一个实例变量,但这在这里不起作用,因为没有函数实例可以重用(this在严格模式下不可以)。

javascript reactjs react-hooks

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

为本地开发创建不同的 eslint 规则

这是一个激励示例:我正在开发一些代码并想弄清楚出了什么问题,所以我有

function foo() {
    console.log("Look its 2016 and I'm still printf debugging");
}
Run Code Online (Sandbox Code Playgroud)

除了……我们的构建过程将 esLint 作为构建系统的一部分运行,并且如果 esLint 失败,设计上甚至会阻止运行其余的构建管道。 error Unexpected console statement no-console

我实际上想要的是设置一个dev环境,在其中关闭某些规则(或转换为警告),然后设置一个production打开严格规则的环境。而且我希望能够轻松地在本地切换它,以便我可以在将代码提交到 CI 服务器之前验证我的代码是否有效。

我找不到任何相关的代码片段来实现这一点,这让我很伤心。我的构建环境只是npm脚本(仅使用 esLint CLI + package.json),但我很乐意从另一个构建环境移植解决方案。

现在,我只能// eslint-disable-line在本地修改.eslintrc文件并祈祷我不会意外地将其签入。一定会有更好的办法。

javascript node.js npm eslint devops

14
推荐指数
3
解决办法
4560
查看次数

Rails:从URL解析路由信息

如何解析url字符串以像哈希一样

{:controller => 'controller_name', :action => 'action_name', :id => 'id'}
Run Code Online (Sandbox Code Playgroud)

url routing ruby-on-rails

13
推荐指数
2
解决办法
5820
查看次数

设置窗口最小化浏览器的最小大小限制?

有没有办法在所有浏览器中手动设置浏览器窗口的最小大小?

html javascript css browser cross-browser

13
推荐指数
2
解决办法
7万
查看次数

webpack构建后访问全局变量

让我有一个包含内容的文件 index.js

var a = 1;
Run Code Online (Sandbox Code Playgroud)

我有 index.html 文件,其中包含使用<script>标签的index.js 。当我在浏览器中打开 index.html 页面时,a可以直接在浏览器控制台中访问该变量。因为a具有全局作用域并且它是全局变量。

现在我正在使用 npm 和 webpack。我的 package.json 文件内容是

"scripts": {
  "build": "webpack"
},
Run Code Online (Sandbox Code Playgroud)

和 webpack.config.js 文件内容是

module.exports = {
entry: './index.js',
output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
}
Run Code Online (Sandbox Code Playgroud)

现在我运行 npm build 然后在名为 bundle.js 的 dist 文件夹中创建新文件。

现在我script用 dist/bundle.js从index.html 文件的标签中替换 index.js 。

现在我在浏览器中运行 index.html,但变量a不再直接在浏览器控制台中访问。它现在不是全局变量。

我的问题是:有没有一种方法可以a像我们最初访问一样全局访问变量?

我还没有在互联网上找到确切的答案。我找到了一个 loader暴露加载器,但它也不能解决我的问题。

javascript node.js webpack

11
推荐指数
1
解决办法
9173
查看次数

禁用cpplint中的特定警告

运行cpplint时,我遇到了一些我想完全禁用的警告.特别是版权信息和空白:

range.h:0:未找到版权信息.你应该有一条线:

"版权所有[年]"[法律/版权] [5]

range.h:10:代码和注释之间至少有两个空格

[空白/评论] [2]

我该如何做到这一点?理想情况下,修改CPPLINT.cfg文件,但我会采用内联注释或命令行标志.我找不到任何关于禁用规则的文档.

c++ cpplint linter

10
推荐指数
1
解决办法
5229
查看次数

如何在Elixir中将float转换为整数

给定一个浮点数,比方说(2.0),我想将它转换为Integer类型.就我所知,Integer.parse看起来只适用于字符串.

Integer.parse(2.0)
(FunctionClauseError) no function clause matching in Integer.count_digits/2
Run Code Online (Sandbox Code Playgroud)

elixir

10
推荐指数
2
解决办法
3983
查看次数

提取管道中元组的第二个元素

我希望能够在管道中提取元组的第N项,而不使用with或以其他方式分解管道.Enum.at除了元组不是枚举这一事实外,它会完美地工作.

这是一个激励人心的例子:

colors = %{red: 1, green: 2, blue: 3}
data = [:red, :red, :blue]
data 
|> Enum.map(&Map.fetch(colors, &1))
|> Enum.unzip
Run Code Online (Sandbox Code Playgroud)

这回来了{[:ok, :ok, :ok], [1, 1, 3]},假设我只想提取[1, 1, 3]

(对于这种特殊情况,我可以使用,fetch!但对于我不存在的实际代码.)

我可以补充一下

|> Tuple.to_list
|> Enum.at(1)
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,不需要从每个元组创建一个临时列表?

pipeline tuples elixir

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

在ES2015中枚举通配符导入

因此,在ES2015中,您可以:

// Module A
export const FOO = 0;
export const BAR = 1;

// Module B
import * as AExports from 'ModuleA';
console.log(AExports.FOO); // Prints 0
Run Code Online (Sandbox Code Playgroud)

在运行时枚举ModuleA的官方方法是什么?

import * as AExports from 'ModuleA';
// Are these values guaranteed to be something?
Object.keys(AExports); // If so, should I look at enumerable values?
[...AExports]; // Iterable values?
Object.getOwnPropertyNames(AExports); // Here?
Run Code Online (Sandbox Code Playgroud)

据我所知,规范将其描述为ImportedBinding但我无法从中推断出更多内容.

NameSpaceImport : * as ImportedBinding
Let localName be the StringValue of ImportedBinding.
Let entry be the Record {[[ModuleRequest]]: …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

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

键入跨度可添加幻影背景颜色样式

JSFiddle:http://jsfiddle.net/p7ph5vfj/

我的问题是:有人可以建议解决这个特定于Chrome的错误吗?我的问题不是字母X突出显示,而是它失去了.foo类,所以我再也找不到它了.如果背景颜色消失,我会很好地保持.foo类保持不变.我甚至不知道如何调试这个,因为当发生这种情况时,DOM断点不会触发.

<div contenteditable="true">
    DO NOT REPLACE. <span class="foo">END a b c</span> d START la la
</div>
Run Code Online (Sandbox Code Playgroud)

CSS看起来像这样:

.foo {
    background-color: #ff0000;
}
Run Code Online (Sandbox Code Playgroud)

触发chrome上的错误的步骤是:

  • 拿起鼠标,将光标放在单词START旁边

  • 单击并按住以选择文本,转到左侧并在单词END处完成选择.

  • 选择应完全涵盖以下文本:"END abcd START".同样,选择必须是从右到左.

  • 在键盘上键入一个新字符,例如'X'

  • 如果X以红色突出显示,则表示您已触发该错误.

这个bug特别是HTML现在看起来像这样:

<div contenteditable="true">
    DO NOT REPLACE. <span style="background-color: rgb(255, 0, 0);">X</span>&nbsp;la la
</div>
Run Code Online (Sandbox Code Playgroud)

.foo课程在哪里,这种背景颜色风格来自哪里?在发生这种情况时,不会将div断点添加到div或span中.

html css google-chrome

5
推荐指数
1
解决办法
100
查看次数