我正在与 Gatsby 一起使用样式组件。我使用 styled-components 来设置LinkGatsby 为我的主页提供的组件的样式。
const HomePageLink = styled(Link)`
display: inline-block;
font-size: ${fontSizes.xxlarge};
text-decoration: none;
box-shadow: none;
:link,
:visited {
color: ${colors.slate};
}
:hover,
:active {
color: ${colors.red};
}
`
Run Code Online (Sandbox Code Playgroud)
但是我意识到我还需要<a />使用完全相同的样式来设置纯 html 标签的样式。我想知道有没有办法让上面的样式组件适应<a />标签而不需要像这样重复代码
const HomePageAnchorTag = styled.a`
display: inline-block;
font-size: ${fontSizes.xxlarge};
text-decoration: none;
box-shadow: none;
:link,
:visited {
color: ${colors.slate};
}
:hover,
:active {
color: ${colors.red};
}
`
Run Code Online (Sandbox Code Playgroud) 我正在编写一个简单的包装器fetch。
async function apiCall(
endpoint: string,
{
data,
headers: customHeaders,
...customConfig
}: { data?: Object; headers?: Object } = {}
) {
const config = {
method: data ? 'POST' : 'GET',
body: data ? JSON.stringify(data) : undefined,
headers: {
'content-type': data ? 'application/json' : undefined,
...customHeaders,
},
...customConfig,
}
return fetch(endpoint, config as any).then(async (response) => {
if (response.ok) {
const json = await response.json() //
return json
} else {
// what if `response` contains error …Run Code Online (Sandbox Code Playgroud) 我有一个订单簿组件,它正在从此 websocket 端点获取数据"wss://ws.bitstamp.net"
订阅在内部触发useEffect
useEffect(() => {
const subscribe = {
event: "bts:subscribe",
data: {
channel: `order_book_${currencyPair}`
}
};
const ws = new WebSocket("wss://ws.bitstamp.net");
ws.onopen = () => {
ws.send(JSON.stringify(subscribe));
};
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
setOrders(response.data);
};
ws.onclose = () => {
ws.close();
};
return () => {
ws.close();
};
}, [currencyPair]);
Run Code Online (Sandbox Code Playgroud)
但现在的问题是更新太频繁了。我希望它最多每 2 秒更新一次。我想知道我怎样才能做到这一点?我的第二个问题是,有没有办法让我知道 WebSocket 端点向前端传输数据的频率?我对 WebSocket 还很陌生,但我知道它是全双工的,并且服务器正在将数据推送/流式传输到客户端。我很好奇是否有办法知道前端的频率?
这是现场演示https://codesandbox.io/s/orderbook-forked-r2719?file=/src/OrderBook.js
我是 C 和 C++ 新手。我知道每当调用一个函数时,它的变量都会在堆栈上分配内存,包括变量恰好是一个指针,该指针指向通过mallocor分配在堆上的数据new(但我听说不能保证malloc分配的存储100%在堆上,如果我错了,请纠正我)。例如,
Void fn(){\n Member *p = new Member()\n}\n \nRun Code Online (Sandbox Code Playgroud)\n或者
\nVoid fn() {\n int *p = (int*) malloc( sizeof(int) * 10 ); \n}\nRun Code Online (Sandbox Code Playgroud)\n如果我错了,请纠正,在这两种情况下,变量p(保存堆上分配的对象的地址)都在堆栈上,并且它指向堆上的对象。\n所以说所有的都正确吗?我们声明的变量位于堆栈上,即使它们可能指向堆上的某些内容?\n让\xe2\x80\x99s 说局部变量指针的地址p加载到内存地址001,它具有位于堆上的成员对象的地址,该地址是002。我们可以画这样的图。\n
如果这是正确的,我的下一个问题是,我们是否可以拥有一个实际位于堆上的指针,并且它指向位于堆栈上的变量?如果不可能,该指针是否可以指向位于堆上的变量?\n也许这个问题的另一种表达方式是:为了访问堆中的某些内容,我们只能通过堆栈上的指针来访问它?\n可能的图表如下所示
\n如果可能的话,我可以在这里举个例子吗?
\n\n在学习C和C++时,有人告诉我:
所以我想知道这两种说法实际上是真的吗?是否有可能有不以自己的内存结束的变量?
例如
int a = 1
int b = a
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,是否有可能任何变量都没有分配其专用的内存块?例如,当变量直接加载到寄存器而不首先存储在内存中时?