小编wei*_*wei的帖子

如何在反应中处理自定义钩子的依赖项数组

我正在创建一个自定义钩子,并想定义一个可选参数,以便我可以在需要时传入额外的依赖项。我的代码如下所示:

import { useEffect } from 'react';

function useCustomHook(param1, extraDeps) {
  useEffect(() => {
    // do something with param1 here
  }, [param1, ...extraDeps])
}
Run Code Online (Sandbox Code Playgroud)

react-hooks/exhaustive-deps 发出警告说

React Hook useEffect 在其依赖数组中有一个 spread 元素。这意味着我们无法静态验证您是否传递了正确的依赖项

任何人都知道如何解决该警告?或者将 deps 数组传递给自定义钩子不是一个好习惯?

对于那些对为什么需要 extraDeps 感兴趣的人。这是一个例子:

const NewComponent = (props) => {
  [field1, setField1] = useState()
  [field2, setField2] = useState()

  // I only want this to be called when field1 change
  useCustomHook('.css-selector', [field1]);

  return <div>{field1}{field2}</div>;
}
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

29
推荐指数
2
解决办法
9246
查看次数

如何匹配Python原始字符串中的新行字符

我对Python原始字符串有点困惑.我知道如果我们使用原始字符串,那么它会将'\'视为正常的反斜杠(例如r'\n'将是'\'和'n').但是,我想知道如果我想匹配原始字符串中的新行字符.我试过r'\n',但它不起作用.有人对此有一些好主意吗?

python regex rawstring

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

python函数中的任意数量的参数

我想学习如何在python函数中传递任意数量的args,所以我以递归的方式编写了一个简单的sum函数,如下所示:

def mySum(*args):
  if len(args) == 1:
    return args[0]
  else:
    return args[-1] + mySum(args[:-1])
Run Code Online (Sandbox Code Playgroud)

但是当我测试时mySum(3, 4),我收到了这个错误:

TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
Run Code Online (Sandbox Code Playgroud)

有没有人对此有所了解并给我一些线索来纠正它?

python

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

添加到主屏幕后,PWA(Progressive Web App)将使用哪种浏览器?

我很好奇在添加到主屏幕后浏览器PWA将在引擎盖下使用的内容.是否是您最初选择的"添加到主屏幕"?如果是,如果我在Chrome上将Chrome添加到主屏幕怎么办?手机,然后删除Chrome(假设我的手机上只剩下Safari了)?当点击主屏幕上的图标时,PWA是否仍然有效?

progressive-web-apps

14
推荐指数
2
解决办法
2324
查看次数

在 GraphQL 中在 Input 和 Type 之间共享公共字段

我想知道是否有办法在 GraphQL 中共享 Input 和 Type 之间的公共字段,这样我就不必在多个地方定义相同的字段集。

例子:

input PersonInput {
    id: String!
    name: String
    address: String
}

type Person {
    id: String!
    name: String
    address: String
}
Run Code Online (Sandbox Code Playgroud)

我知道 Fragment 可能是一个解决方案,但如果我的理解是正确的,使用 Fragment 总是需要您设置一个 ON 条件,使其看起来像这样:

Fragment PersonCommonFields on Person {
    ...
}
Run Code Online (Sandbox Code Playgroud)

似乎没有办法指定“on Person/PersonInput”。

graphql graphql-js graphql-tools

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

什么是rubyGems env中的"用户安装目录"

这是我的RubyGems环境:

  • RUBYGEMS版本:2.5.2
  • RUBY版本:2.2.2(2015-04-13 patchlevel 95)[x86_64-darwin14]
  • 安装目录:/Users/wh026399/.rvm/gems/ruby-2.2.2
  • 用户安装目录:/Users/wh026399/.gem/ruby/2.2.0
  • RUBY EXECUTABLE:/Users/wh026399/.rvm/rubies/ruby-2.2.2/bin/ruby
  • 可执行的目录:/Users/wh026399/.rvm/gems/ruby-2.2.2/bin
  • SPEC CACHE目录:/Users/wh026399/.gem/specs
  • SYSTEM CONFIGURATION目录:/等
  • RUBYGEMS PLATFORMS:
    • 红宝石
    • x86_64的-达尔文-14
  • 创业板路径:
    • /Users/wh026399/.rvm/gems/ruby-2.2.2
    • /Users/wh026399/.rvm/gems/ruby-2.2.2@global

我想知道"用户安装目录"是什么.为什么它不指向文件夹.rvm下的宝石而是.gem呢?另外,为什么它使用2.2.0这是我没有安装的ruby版本?

rubygems ruby-on-rails

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

webpack-dev-server无法检测嵌套文件夹中的文件更改

我正在为我的项目使用webpack-dev-server v1.14.1,整个项目结构如下:

|----src
|     |----index.js
|     |----components
|     |     |----a.js
|     |----containers
|           |----sub-containers
|                 |----b.js 
|     
|----package.json
|----webpack.config.dev.js
Run Code Online (Sandbox Code Playgroud)

但是,当我运行命令"webpack-dev-server --inline"时,服务器只能捕获a.js文件中的更改.它忽略了b.js文件中的更改.有什么想法吗?

javascript webpack webpack-dev-server

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