小编Emo*_*ses的帖子

ReactJs:响应状态变化改变状态

我有一个带输入的React组件和一个可选的"高级输入":

[ basic ]
Hide Advanced...
[ advanced ]
Run Code Online (Sandbox Code Playgroud)

如果单击"隐藏高级"(更改为"显示高级"),则底部的高级版将消失.这很简单,工作正常,showAdvanced状态中的一个键控制文本以及是否呈现高级输入.

但是,外部JS代码可能会更改高级的值,在这种情况下,我想显示[高级]输入,如果它当前被隐藏且值不同于默认值.但是,用户应该能够单击"隐藏高级"以再次关闭它.

所以,有人打电话给cmp.setState({advanced: "20"})我,然后我想表现出先进性; 最直接的做法就是showAdvanced在我的状态下更新.但是,似乎没有办法更新某些状态以响应React中的其他状态更改.我可以想到一些行为略有不同的变通方法,但我真的想要有这种特定的行为.

我应该将showAdvanced移动到道具,这有意义吗?你可以根据状态变化改变道具吗?谢谢.

javascript state reactjs

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

如何在 docker 容器内将 DNS 名称别名为 hosts.docker.internal?

TL;DR:如何在我的容器中获取客户端以与主机上的服务建立 HTTPS 连接?

我在本地开发机器 (macOS) 的 VM 上运行了一项服务,该服务在端口 8443 上提供 HTTPS;它有一个证书dev.mycoolproject.comdev.mycoolproject.com有一个A指向 127.0.0.1的记录。因此,如果我在本地计算机上运行我的客户端并将其指向它,https://dev.mycoolproject.com:8443则会与我的本地服务建立安全连接。

我想在 docker 容器中运行我的客户端,并且仍然让它连接到主机上的本地服务器。但显然dev.mycoolproject.com指向 127.0.0.1 是行不通的,我不能仅仅/etc/hosts用来重定向它,因为主机的 IP 是动态的。我可以在 访问本地服务器host.docker.internal:8443,但我会收到 TLS 错误,因为主机名不匹配。

有什么办法可以让docker的DNS映射dev.mycoolproject.com到主机IP?我研究了在容器中本地运行 dnsmasq 但我无法让它工作。

dns docker

5
推荐指数
2
解决办法
1145
查看次数

Haskell - 模式匹配和exitSuccess

我有一个看起来像这样的函数:

outputDelayCo :: Maybe Int -> (Event -> ByteString) -> [Event] -> Int -> IO ()
outputDelayCo Nothing  = outputDelay Nothing 
outputDelayCo (Just 1) = do exitSuccess
outputDelayCo (Just n) = outputDelay (Just (n-1)) 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Couldn't match expected type ‘(Event -> ByteString)
                              -> [Event] -> Int -> IO ()’
            with actual type ‘IO a0’
In a stmt of a 'do' block: exitSuccess
In the expression: do { exitSuccess }
Run Code Online (Sandbox Code Playgroud)

我可以通过这样做来解决它,但它更加丑陋:

outputDelayCo :: Maybe Int -> (Event -> ByteString) -> [Event] …
Run Code Online (Sandbox Code Playgroud)

haskell pattern-matching

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

标签 统计

dns ×1

docker ×1

haskell ×1

javascript ×1

pattern-matching ×1

reactjs ×1

state ×1