假设我有3个输入:rate,sendAmount和receiveAmount。我把那3个输入放在useEffect diffing params上。规则是:
receiveAmount = sendAmount * rate
sendAmount = receiveAmount / rate
receiveAmount = sendAmount * rate
时间sendAmount > 0
或计算sendAmount = receiveAmount / rate
时间receiveAmount > 0
这是codesandbox
https://codesandbox.io/s/pkl6vn7x6j来演示此问题。
有没有一种方法可以比较oldValues
和newValues
喜欢,componentDidUpdate
而不是为此情况制作3个处理程序?
谢谢
这是我使用https://codesandbox.io/s/30n01w2r06的最终解决方案usePrevious
在这种情况下,我不能使用多个,useEffect
因为每次更改都会导致相同的网络呼叫。这就是为什么我也使用changeCount
跟踪更改的原因。这changeCount
也有助于跟踪仅来自本地的更改,因此我可以防止由于服务器的更改而导致不必要的网络呼叫。
您可以编写一个自定义钩子,以使用 useRef 为您提供以前的道具
****
function usePrevious(value) {
const ref = useRef();
useEffect(() => {
ref.current = value;
});
return ref.current;
}
然后用在 useEffect
const Component = (props) => {
const {receiveAmount, sendAmount } = props
const prevAmount = usePrevious({receiveAmount, sendAmount});
useEffect(() => {
if(prevAmount.receiveAmount !== receiveAmount) {
// process here
}
if(prevAmount.sendAmount !== sendAmount) {
// process here
}
}, [receiveAmount, sendAmount])
}
但是,如果您useEffect
对每个更改ID分别使用两个,则它更清晰,并且可能更好,更清晰地阅读和理解,您希望分别处理它们
假设我有3个输入:rate、sendAmount和receiveamount。我把这3个输入放在useEffect不同的参数上。这些规则是: 如果sendAmount已更改,则计算 如果receiveAmount已更改,则计算 如果费率更改,则在时计算或在时计算 下面是codesandbox https://codesandbox.io/s/pkl6vn7x6j来演示这个问题。 有没有一种方法可以
我试图在elasticsearch查询中使用无痛语言来比较小时数。我想问一下这样的问题: 但我有错误: 无法应用 [ 嵌套文档的方案是: (这些值的格式为“2:00”或“18:00”)。 我尝试过使用< code >。日期 或<代码>。value,但它不起作用,因为我的变量只包含小时而不是日期时间。 有人能帮帮我吗:)
问题内容: 我想从Python程序中访问R。我知道Rpy2,pyrserve和PypeR。 这三种选择的优缺点是什么? 问题答案: 我比其他人更了解这三个,但按问题中给出的顺序: rpy2: Python和R之间的C级接口(R作为嵌入式进程运行) 暴露给Python的R对象,无需复制数据 相反,Python的numpy数组可以暴露给R而无需创建副本 低级接口(靠近R C-API)和高级接口(为方便
我有一个将unitPrice设置为BigDecimal数据类型的域类。现在我正在尝试创建一种比较价格的方法,但似乎我不能在BigDecimal数据类型中使用比较运算符。我必须更改数据类型还是有其他方法?
问题内容: 使用Linux,我想比较两个具有相同架构的SQLite数据库。只会有一些差异。 有没有可以输出这些差异的工具?最好将它们输出到命令行,以便我可以grep / sed它们。 SQLite使用SQL,因此一般的SQL工具也可以使用。 问题答案: 请查看2015年5月7日发布的SQLite版本3.8.10。此版本首次包含 sqldiff.exe 实用程序, 用于计算两个SQLite数据库文件
问题内容: 首先,我不是要在这里发动战争。我非常了解Jersey,但是很少使用httpclient。 jersey-client和Apache的httpclient之间的主要区别是什么?在哪些方面比另一方面更好?哪里有比较好的图表?较大的文件(例如2048 MB)中,哪一个效果更好? 非常感谢您的评论! 问题答案: 这两件事可能不应该直接比较。Jersey是REST客户端,具有完整的JAX-RS实