我需要改变复选框检查状态,但useCallback重新呈现组件很多次。我不明白它是如何工作的。我读过很多关于它的材料。
const AppealsList = () => {
const [isFiltered, setFiltered] = React.useState(false);
console.log('rerender');
const changeCheckBox = useCallback(() => {
setFiltered(!isFiltered);
}, [isFiltered]);
return (
<div className={classNames('appeals')}>
<div className={classNames('appeals__filter')}>
<input
checked={isFiltered}
className={classNames('appeals__input')}
type="checkbox"
readOnly={true}
/>
<label
onClick={changeCheckBox}
className={classNames('appeals__filter-label')} />
</div>
</div>
);
};
重新渲染的数量:
setCallback用于记忆函数,因此如果您有需要大量处理的繁重函数,您不必处理两次相同的输入。例如,如果你有一个加了两个数字的函数,你给它4和3,然后它运行这个函数,并记住当你在函数中输入4和3时,结果是7。因此,下次传递4和3而不是处理结果时,它使用记忆的结果。
当useCallBack用于记忆函数时,use效应用于防止不必要的重新呈现。我认为在这种情况下,你是想使用使用效果钩子?
这是因为您编写的回调依赖于isFiltered
,因此每次单击时它都会更改。当它不依赖于回调正在更改的状态时,它工作得最好。
要创建不经常更改的切换函数,请让它使用函数调用setState,以便它可以利用useState
提供的功能状态更新,从以前的状态计算新状态:
const changeCheckbox = useCallback(() => {
setFiltered(currentValue => !currentValue);
}, []); // look no dependencies!
您可以在此处阅读有关功能状态更新(从当前状态派生新状态)的信息:https://reactjs.org/docs/hooks-reference.html#functional-更新
如果使用以前的状态计算新状态,则可以将函数传递给setState。该函数将接收前一个值,并返回更新后的值。
我正在Celero git存储库中检查DoNotOptimizeAway的含义。但我还是不明白。请你用外行的话帮我理解一下好吗。尽你所能。
我对遗传的理解是相当基础的。
在我的Visual Studio项目中,我有以下几点,而且效果很好: 我只是想明白,编译器是否坚持我用“typename”作为d::result_of的前缀,因为它可能是模糊的,在d::result_of可以返回一个类,然后::类型可以是一个那个班的成员?这就是为什么它坚持要添加typename吗?如果是这样,那么为什么Visual Studio允许它?不合规吗? 另外,因为我已经读到了C 14或
还不起作用。所以我放弃链接,我只是编码:
问题内容: 我已经花了最后两天的时间来理解系统调用,但是我仍然在这里。让我直接谈谈这个问题。 在execlp的声明系统调用为与描述: 该为const char ARG和随后的椭圆在execl的(),execlp()和execle()函数可以作为为arg0,ARG1,…,ARGN被认为。 但是,我在课本中看到这样的系统调用:(“ …”是我们作为学生来识别的)。但是,此系统调用甚至与系统调用上的声明都
问题内容: 为什么投给打破,当是? 问题答案: 不幸的是,没有办法对中的数组进行这样的转换。您将必须迭代数组并分别转换每个对象。 原因是安全类型,根本无法确保无需迭代遍历数组的内容就可以将其转换为Uri,这就是为什么必须对其进行迭代并分别进行转换的原因。 基本上因为可以被其他对象继承,所以不能保证数组仅包含对象。但是强制转换为超类型将是可行的,因为那样的话,类型安全就可以了。