小编jab*_*tta的帖子

redux-react中的调度函数

我正在研究反应,我有一个这样的例子

//index.js
const store = createStore(reducer)
render(
  <Provider store={store}>
    <AddTodo />
  </Provider>,
  document.getElementById('root')
)

//Apptodo.js
import React from 'react'
import { connect } from 'react-redux'
import { addTodo } from '../actions'

let AddTodo = ({ dispatch }) => {
  let input

  return (
    <div>
      <form onSubmit={e => {
        e.preventDefault()
        if (!input.value.trim()) {
          return
        }
        dispatch(addTodo(input.value))
        input.value = ''
      }}>
    .......
Run Code Online (Sandbox Code Playgroud)

为什么不能得到this.pros.store,只需调用dispatch()函数?

编辑:它是如何提取dispatchthis.pros.不是对象this.pros.store吗?在这种情况下,为什么我们不提取store

谢谢.

javascript ecmascript-6 reactjs react-redux

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

为什么要导入React

我有代码只有在导入React之后才能工作,但我没有在任何地方使用React而是使用reactDom

import ReactDOM from 'react-dom'
import React, {Component} from 'react'

class App extends Component {
  render () {
    return (
      <div>comp </div>
    )
  }
}

//ReactDOM.render(<App/>, document.getElementById('root'))
ReactDOM.render(<div>sv</div>, document.getElementById('root'))
Run Code Online (Sandbox Code Playgroud)

为什么要求导入React?

reactjs react-jsx es6-modules

17
推荐指数
1
解决办法
1971
查看次数

Visual Studio Code中的Groovy格式化程序/美化器

对于VSCode中支持的文件,我们得到一个选项(当您右键单击文件编辑器时)Format Document (ALT+SHIFT+F).

但不幸的是,对于Groovy,此选项不可用.而根据VSCode社区,有没有计划来实现此功能.

是否有可用的替代解决方案,专门用于VSCode?

groovy code-formatting visual-studio-code

15
推荐指数
3
解决办法
1万
查看次数

如何在 Visual Studio Code 中导航回关于 *same* 文件的最后一个光标位置?

Alt+Left 导航回最后一个光标位置,如果最后一个光标位置在不同的文件中,则导航到该文件。

但是,我只想导航到与当前聚焦的文件相关的最后一个光标位置。当我有 2 个拆分文件编辑器并希望彼此互斥地导航回时,这非常有用。

是否可以?


我希望你理解这个问题,如果需要进一步解释,请告诉我。

windows visual-studio-code

12
推荐指数
2
解决办法
1034
查看次数

在VS Code中将JavaScript的保留关键字斜体化

我试图通过TextMate语言语法使用Visual Studio Code的主题设置创建自定义语法样式。

具体来说,我想将所有JavaScript的保留关键字都斜体化。通过以下设置,我已经设法达到了98%的性能(剩余的注释包括在内)。

不幸的是,我找不到一些规则:

  1. storage包括脂肪箭头符号,这一点我希望包括。我想更具体的,如下面的设置可见,但无法找到更具体的设置constructorconst。另外,这"storage.type.function"是我能找到的最明确的功能设置(需要function关键字,但其中包含粗箭头)。
  2. keyword包括字符,如逻辑运算符等,同样,我希望有。keyword.operator是必要的文本运营商(例如ininstanceof),但是包括字符运算符。
  3. 我找不到eval(严格禁止的)或package(未使用的将来关键字)的规则。

有任何想法吗?

const settings = {
  "editor.tokenColorCustomizations": {
    "textMateRules": [
      {
        "scope": [
          // TODO: missing keywords: package, eval

      // all comment types
      "comment",

      // true, false, null
      "constant.language",

      // import, from, export, default, return, if, for, break, continue, try, catch, finally,
      // throw, default, yield, await …
Run Code Online (Sandbox Code Playgroud)

javascript textmate visual-studio-code vscode-settings

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

防止 Prettier 在 Visual Studio Code 中将单行对象声明转换为多行?

我安装了更漂亮的扩展,我的 json 对象定义现在在格式化后断行。我怎样才能避免它?我想保留内联对象声明。

例如,在格式化之前:

  "properties": {
    "d0":  {"type":"boolean","default":false},
    "d1":  {"type":"boolean","default":false},
    "d2":  {"type":"boolean","default":false},
    "d3":  {"type":"boolean","default":false},
    "d4":  {"type":"boolean","default":false},
    "d5":  {"type":"boolean","default":false},
    "d6":  {"type":"boolean","default":false},
    "d7":  {"type":"boolean","default":false},
    "d8":  {"type":"boolean","default":false},
    "d9":  {"type":"boolean","default":false}
  }
Run Code Online (Sandbox Code Playgroud)

格式化后:

  "properties": {
    "d0": {
      "type": "boolean",
      "default": false
    },
    "d1": {
      "type": "boolean",
      "default": false
    },
    "d2": {
      "type": "boolean",
      "default": false
    },
    "d3": {
      "type": "boolean",
      "default": false
    },
    "d4": {
      "type": "boolean",
      "default": false
    },
    "d5": {
      "type": "boolean",
      "default": false
    },
    "d6": {
      "type": "boolean",
      "default": false
    },
    "d7": …
Run Code Online (Sandbox Code Playgroud)

visual-studio-code prettier

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

NPM包:最佳实践和公开多个导入路径

我创建了一个使用Webpack和Babel进行转换/捆绑的NPM包.

在我package.json,我有主要的"main": "build/index.js".在我的Webpack配置中,我有条目设置entry: { app: './src/index.js' }.我的输入文件如下所示.

安装软件包时一切正常.但是,使用此设置,每个帮助程序都会公开两个导入路径:

这对于支持自动导入的编辑器来说是一个问题,因为它们有时会自动导入'my-package/build/utils/helper1'而不是首选路径'my-package'.

那么,有两个问题:

  1. 有没有办法阻止更长的导入路径暴露?
  2. 创建NPM包时最佳做法是什么.我的设置是否可接受,或者我应该做些不同的事情?

条目文件:

import helper1 from './utils/helper1';
import helper2 from './utils/helper2';

export {
  helper1,
  helper2,
};

const myPackage = {
  helper1,
  helper2,
};

export default myPackage;
Run Code Online (Sandbox Code Playgroud)

javascript node.js npm webpack package.json

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

在发送 POST 数据时阻止 Safari 规范化 Unicode?

显然,Safari 在发送 POST 数据时对 Unicode 进行了规范化,而所有其他主要浏览器只发送它们所提供的内容。

规范化似乎发生在数据通过网络发送之前,并且对数据使用normalize()不起作用(Safari 强制执行 NFC,无论它提供什么)。

当请求带有重音字符的文件名时,这会成为一个问题,它在 NFC 和 NFD 格式中具有不同的代码点。解释基本上归结为Unicode 等价中的“组合字符”与“预组合字符” )。

话虽如此,鉴于 API 不在后端进行自己的规范化,并且需要一个字符串数组(文件名),是否可以在使用 Safari 时在前端发送正确的文件名?

Unicode 规范化问题的一个例子:

const str = 'Rosé'

const nfc = str.normalize()
const nfd = str.normalize('NFD')

console.log(nfc === nfd) // false

console.log(nfc.codePointAt(3)) // 233
console.log(nfd.codePointAt(3)) // 101

console.log(nfc.codePointAt(4)) // undefined
console.log(nfd.codePointAt(4)) // 769
Run Code Online (Sandbox Code Playgroud)

一个最小的、可重现的例子:

请注意 Chrome 和 Safari 之间的控制台日志差异。

const isCorrectForm = (path, form) => path === path.normalize(`NF${form}`)

const fetchData = async() => {
  const sourcePathC = …
Run Code Online (Sandbox Code Playgroud)

javascript unicode safari rest post

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

JavaScript中的有效属性名称,属性赋值和访问权限

更新的问题

究竟什么是Javascript中有效的属性名称?各种财产分配方法有何不同?属性名称如何影响属性访问?

注意

我原来的问题(见下文)的答案有助于澄清一些事情,但也开辟了一堆新的蠕虫.既然我已经有机会对JavaScript更加熟悉了,我相信我已经能够解决很多问题了.

由于我很难将这些信息合并到一个解释中,我认为扩展我的原始问题可能会有所帮助,并尝试回答它.

原始问题

最初,MDN JavaScript指南(对象文字)存在一些混淆.具体来说,我想知道为什么他们声称如果属性名称不是有效的JavaScript标识符,那么它必须用引号括起来.然而,他们提供了示例代码,表明可以使用数字7 - 没有引号 - 作为属性名称.

事实证明,指南只是忽略了一个重要部分,Pointy对其进行了更新(粗体更改):

如果属性名称不是有效的JavaScript标识符或数字,则必须用引号括起来.

我还想知道为什么允许属性名称偏离适用于标识符的"可能不以数字开头"规则.这个问题实际上揭示了我对属性名称的完全误解,并且是导致我做更多研究的原因.

javascript properties object accessor identifier

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

在 Elastic Beanstalk 上使用 Node/Express 重定向到 HTTPS

我试图让一个网站强制使用 HTTPS(从 HTTP 重定向)。我们已经通过 AWS Elastic Beanstalk 设置了 HTTPS。问题是,目前,HTTP 和 HTTPS 都可以使用。

在阅读了几篇文章后,包括这篇文章,下面的代码就是我想出的。不幸的是,这不起作用。

我错过了什么?

import express from 'express';
import { join } from 'path';

const app = express();
const buildPath = join(`${__dirname}/../build`);
const enforceHTTPS = (req, res, next) => {
  if (req.headers['x-forwarded-proto'] === 'https') return next();
  else return res.redirect(301, join(`https://${req.hostname}${req.url}`));
};

app.use(express.static(buildPath));
app.use(enforceHTTPS);
app.get('*', (req, res) => res.sendFile(`${buildPath}/index.html`));
app.listen(process.env.PORT || 3000, () => console.log('Server running on port 3000!'));

export default app;
Run Code Online (Sandbox Code Playgroud)

javascript https node.js express amazon-elastic-beanstalk

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

自动完成在 Visual Studio 代码中无法正常工作

我刚开始使用 Visual Studio Code,并且一直是 Atom 的用户。我注意到的一件事,特别是对于 PHP 的自动完成,我必须滚动选项列表才能找到自动填充代码的选项。我想通过点击选项卡来获得自动完成。

比如说,我想发表一个if声明。在 Atom 中,我只需输入“if”,然后点击 Tab 键,它就会用我需要的所有内容填充代码。在 VS Code 中,如果我输入“if”后跟 Tab,什么都不会发生。我必须先滚动到特定选项。有没有办法通过输入关键字然后按 Tab 来获得自动完成?

这个问题也适用于elseif, else, while

php visual-studio-code

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

VS 代码片段变换: if (正则表达式匹配 X) { 使用变换 A } else if (正则表达式匹配 Y) { 使用变换 B }

我正在尝试创建一个片段,该片段根据文件路径创建类名。如果文件名为index.js,我希望类名采用文件夹名称。否则,使用文件名。

index.js如果文件被命名(它正确插入文件夹名称),我有一个当前正在工作的转换(如下所示) 。

我将如何扩展这一点(假设有可能)也适用于第二种情况?

我确实从VSCode 文档中注意到,您可以使用一些基本的 if/else 格式,它们仅在捕获组存在时插入给定的文本。我已经能够让那些人通过一些简单的例子来工作。但不确定这些是否可以以某种方式用来完成我想做的事情。

当前片段:

{
  "mySnippet": {
    "prefix": "cls",
    "body": [
        "class ${TM_FILEPATH/[\\/\\w$]+\\/(?!index)|\\/index.js//g} {}",
        "export default ${TM_FILEPATH/[\\/\\w$]+\\/(?!index)|\\/index.js//g};"
    ]
  },
}
Run Code Online (Sandbox Code Playgroud)

javascript regex code-snippets visual-studio-code vscode-snippets

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