我有一个图表组件,可以在其中显示/隐藏特定的线条。为了跟踪哪些行是活动的,我将activeKeys数组保持在一个状态。最初,我从一个getKeys接受数据数组的函数中获取键名。
当我这样做时:
const defaultValue = getKeys(data)
console.log('defaultValue from keys', defaultValue)
const [activeKeys, setActiveKeys] = useState(defaultValue)
console.log('activeKeys', activeKeys)
Run Code Online (Sandbox Code Playgroud)
第一个控制台日志显示正确的键:
["createdCount", "confirmedCount", "hasFeedbackCount"]
Run Code Online (Sandbox Code Playgroud)
第二个控制台日志显示 []
但如果我这样做:
const defaultValue = ["createdCount", "confirmedCount","hasFeedbackCount"]
console.log('defaultValue', defaultValue)
const [activeKeys, setActiveKeys] = useState(defaultValue)
console.log('activeKeys', activeKeys)
Run Code Online (Sandbox Code Playgroud)
第一个控制台日志显示相同的数组:
["createdCount", "confirmedCount", "hasFeedbackCount"]
Run Code Online (Sandbox Code Playgroud)
并 activeKeys显示正确的数组:
["createdCount", "confirmedCount", "hasFeedbackCount"]
Run Code Online (Sandbox Code Playgroud)
是useState坏了还是什么?BygetKeys是一个简单的功能,没有承诺或类似的东西。它看起来像这样:
["createdCount", "confirmedCount", "hasFeedbackCount"]
Run Code Online (Sandbox Code Playgroud)
的形状Props['data']是:
["createdCount", "confirmedCount", "hasFeedbackCount"]
Run Code Online (Sandbox Code Playgroud) 为什么这些不相等?
show $ if someCondition then someInt else some double
Run Code Online (Sandbox Code Playgroud)
和
if someCondition then show someInt else show someDouble
Run Code Online (Sandbox Code Playgroud)
我了解,如果您将if ... else第一个示例中的部分本身与一个表达式隔离开,那么您就无法用匿名和类型来表示其类型Int | Double,就像您可以在TypeScript中轻松进行的操作(提及TypeScript,因为它是我经常使用的语言,该语言支持Sum类型),因此不得不诉诸于使用Either数据,然后基于调用show。
我在这里给出的示例很简单,但对我来说,认为“好吧,我们将要显示某些东西,而某些东西取决于someCondition”,而不是“好吧,如果someCondition为true,则显示someInt,否则显示someDouble”,并且也允许减少代码重复(这里的显示重复了两次,但它也可能是一个长函数的应用程序,而不是if ... else可能要考虑的> 2个分支)
在我看来,对于编译器来说,检查构成求和类型的每种类型(在此处Int | Double)是否可以用作show函数的参数并确定类型是否正确应该很容易。更好的是,无论参数的类型如何,show函数始终会返回string,因此编译器不必随身携带所有可能的“分支”(因此所有可能的类型)。
是否选择不存在这样的功能?还是我认为实施起来更加困难?
compiler-construction language-features haskell typechecking
我有一个 React 应用程序,我想在移动设备上进行测试,但是 Chrome 或 Firefox 中的移动开发工具还不够。
后端运行在 上localhost:5000,前端运行在 上localhost:3000。
如果我同时运行ngrok http 3000并且ngrok http 5000使用 给出的链接,我ngrok http 3000可以访问我的前端,但是(可以理解)它可以与我的后端通信,因为它正在寻找localhost: 5000与我的手机相关的服务器,而不是查找 给出的链接ngrok http 5000。
我的问题是:
配置我的应用程序和 ngrok 以便我可以同时在计算机和手机上测试我的应用程序的最佳方法是什么?
有没有更好的方法来做到这ngrok一点而不使用?
谢谢
我正在尝试模拟任何图像编辑器中的“画笔”功能。
我有以下流:
$pointerDown: 指针被按下$pointerUp: 指针向上$position: 刷子的位置$escape: 退出键被按下当用户拖动鼠标时,进行临时计算。如果鼠标已抬起,则提交这些更改。如果按下转义键,则不要提交这些更改。
我目前处理的是第一种情况:
$pointerDown.pipe(
r.switchMap(() =>
$position.pipe(
r.throttleTime(150),
r.map(getNodesUnderBrush),
r.tap(prepareChanges),
r.takeUntil($pointerUp),
r.finalize(commitBrushStroke))
)).subscribe()
Run Code Online (Sandbox Code Playgroud)
如何以两种不同的方式结束流?这个惯用的 rxjs 是什么?
谢谢
我有一个像这样的数据框:
| A | B | C | D |
|---|---|----|---|
| 1 | 3 | 10 | 4 |
| 2 | 3 | 1 | 5 |
| 1 | 7 | 9 | 3 |
Run Code Online (Sandbox Code Playgroud)
其中 ABCD 是类别,值在 [1, 10] 范围内(某些值可能不会出现在单个列中)
我想要一个数据框,为每个类别显示这些值的计数。像这样的东西:
| | A | B | C | D |
|----|---|----|---|---|
| 1 | 2 | 0 | 1 | 0 |
| 2 | 1 | 0 | 0 | 0 |
| 3 …Run Code Online (Sandbox Code Playgroud) reactjs ×2
arrays ×1
dataframe ×1
haskell ×1
javascript ×1
mobile ×1
ngrok ×1
observable ×1
pandas ×1
pivot-table ×1
python ×1
react-hooks ×1
rxjs ×1
server ×1
testing ×1
typechecking ×1
typescript ×1