我有一个带输入的React组件和一个可选的"高级输入":
[ basic ]
Hide Advanced...
[ advanced ]
Run Code Online (Sandbox Code Playgroud)
如果单击"隐藏高级"(更改为"显示高级"),则底部的高级版将消失.这很简单,工作正常,showAdvanced状态中的一个键控制文本以及是否呈现高级输入.
但是,外部JS代码可能会更改高级的值,在这种情况下,我想显示[高级]输入,如果它当前被隐藏且值不同于默认值.但是,用户应该能够单击"隐藏高级"以再次关闭它.
所以,有人打电话给cmp.setState({advanced: "20"})我,然后我想表现出先进性; 最直接的做法就是showAdvanced在我的状态下更新.但是,似乎没有办法更新某些状态以响应React中的其他状态更改.我可以想到一些行为略有不同的变通方法,但我真的想要有这种特定的行为.
我应该将showAdvanced移动到道具,这有意义吗?你可以根据状态变化改变道具吗?谢谢.
TL;DR:如何在我的容器中获取客户端以与主机上的服务建立 HTTPS 连接?
我在本地开发机器 (macOS) 的 VM 上运行了一项服务,该服务在端口 8443 上提供 HTTPS;它有一个证书dev.mycoolproject.com并dev.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 但我无法让它工作。
我有一个看起来像这样的函数:
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)