我有以下组件会no-shadow
在上触发ESlint错误FilterButton
props
。
import { setFilter } from '../actions/filter';
function FilterButton({ setFilter }) {
return (
<button onClick={setFilter}>Click</button>
);
}
export default connect(null, { setFilter })(FilterButton);
如何在保持简洁语法mapDispatchToProps
和ESlint规则的同时避免警告?
我知道我可以添加注释以禁止显示警告,但是对每个组件执行此操作似乎都是多余且乏味的。
这里有四个选项:
为什么?
这是避免ESLint错误的最简单方法。
为什么不?
使用no-shadow规则有助于防止使用时出现非常常见的错误react-redux
。也就是说,尝试调用未连接的原始动作(不会自动分派)。
换句话说, 如果您没有
使用分解并从道具中获取动作,则setFilter()
不会分派动作(因为您将直接调用导入的动作,而不是通过props通过props调用关联的动作props.setFilter()
,后者会react- redux
自动为您分派)。
通过清除变量阴影,您和/或您的IDE更有可能发现错误。
怎么样?
向文件中添加eslintConfig
属性package.json
是执行此操作的一种方法。
"eslintConfig": {
"rules": {
"no-shadow": "off",
}
}
connect()
。为什么?
您将从无阴影规则的安全性中受益,并且,如果您选择遵守命名约定,则这非常明确。
为什么不?
介绍样板。
如果不使用命名约定,则现在必须为每个操作提供备用名称(仍然有意义)。而且,相同的动作在各个组件中的命名方式可能会有所不同,从而使人们更难以熟悉动作本身。
如果确实使用命名约定,则名称会变得很长且重复。
怎么样?
没有命名约定:
import { setFilter } from '../actions/filter';
function FilterButton({ filter }) {
return (
<button onClick={filter}>Click</button>
);
}
export default connect(null, { filter: setFilter })(FilterButton);
使用命名约定:
import { setFilter, clearFilter } from '../actions/filter';
function FilterButton({ setFilterConnect, clearFilterConnect }) {
return (
<button onClick={setFilterConnect} onBlur={clearFilterConnect}>Click</button>
);
}
export default connect(null, {
setFilterConnect: setFilter,
clearFilterConnect: clearFilter,
})(FilterButton);
为什么?
通过显式使用props对象之外的方法,您无需担心阴影。
为什么不?
用props
/ 前置所有动作this.props
是重复的(如果您要破坏所有其他非动作道具,则不一致)。
怎么样?
import { setFilter } from '../actions/filter';
function FilterButton(props) {
return (
<button onClick={props.setFilter}>Click</button>
);
}
export default connect(null, { setFilter })(FilterButton);
为什么?
简明扼要。
为什么不?
其他开发人员(或您将来的自己)可能无法理解正在发生的事情。并且,根据您遵循的样式指南,您可能会违反no-wildcard-
imports规则
。
怎么样?
如果您只是从一个模块传递动作创建者:
import * as actions from '../actions/filter';
function FilterButton({ setFilter }) {
return (
<button onClick={setFilter}>Click</button>
);
}
export default connect(null, actions)(FilterButton);
如果要传入多个模块,请使用具有REST语法的对象分解:
import * as filterActions from '../actions/filter';
import * as otherActions from '../actions/other';
// all exported actions from the two imported files are now available as props
function FilterButton({ setFilter, clearFilter, setOther, clearOther }) {
return (
<button onClick={setFilter}>Click</button>
);
}
export default connect(null, { ...filterActions, ...otherActions })(FilterButton);
并且由于您在注释中提到了对ES6简洁语法的偏爱,因此不妨抛出带有隐式返回的arrow函数:
import * as actions from '../actions/filter';
const FilterButton = ({ setFilter }) => <button onClick={setFilter}>Click</button>;
export default connect(null, actions)(FilterButton);
阴影 Unity 的灯光可以将 阴影 从一个游戏对象投射到自身的其他部分或是附近的其他游戏对象上。阴影以『扁平』的方式体现游戏对象的尺寸和位置,因此可以为场景添加一定程度的深度和真实感。 场景视图中的游戏对象正在投射阴影 阴影如何工作? 考虑一种最简单的情况,在场景中只有单个光源。光线从光源出发并沿着直线传播,最终可能会碰撞到场景中的游戏对象。一旦光线碰撞到某个游戏对象,光线将无法继续传播和照亮前
让我们看一下使用两种不同的方式去计算单词的个数,第一种方式使用 reduceByKey 另外一种方式使用 groupByKey: val words = Array("one", "two", "two", "three", "three", "three") val wordPairsRDD = sc.parallelize(words).map(word => (word, 1)) val
按照一个又一个教程并尝试了一百万个不同的配置,我仍然无法让我的烧瓶应用程序在mod_wsgi下运行: 我的WSGI脚本 Apache 2 配置: 存在这些应用程序的整个目录都属于我的,并且我得到的错误是403禁止。 我在error.log中得到的信息: [8月14日星期六09:22:57.441200 2021][authz_core:错误][pid 24121:tid 1401669790819
如果设备离线,如何不从阴影中检索数据? 或者如何从AWS物联网阴影中忽略过时的数据?
这是一个关于示例项目的基本问题,因为我仍在学习Java8个特性的最佳实践。 假设我有一个OrderDetail对象,该对象表示OrderDetail的List。同时,包含一个和一个,以及和。 对于本例,我将把从移动到,这两个都是对象,具有属性,这将受到结果的影响。 现在,我需要更新所有
null本身不是对象,也不是Objcet的实例 问题: null代表不确定的对象, 是一个很模糊的概念, 容易产生二义性 Map.get(key)若返回value值为null,其代表的含义可能是该键指向的value值是null,亦或者该键在map中并不存在 优点: 从内存消耗和效率方面,null更加廉价 优化: Optional com.google.common.base.Optional Op