我正在使用 ReactHooks。我正在尝试访问功能中ref的User组件useEffect。但是我得到了elRef.current价值null,虽然我elRef.current作为第二个参数传递给useEffect. 但我想得到对div元素的引用。但在 之外(函数体)useEffect,ref值是可用的。这是为什么 ?我怎样才能得到elRef.current里面的价值useEffect?
代码
import React, { Component, useState, useRef, useEffect } from "react";
const useFetch = url => {
const [data, setData] = useState(null);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(null);
useEffect(
() => {
setIsLoading(true);
fetch(url)
.then(response => {
if (!response.ok) throw Error(response.statusText);
return response.json();
})
.then(json => { …Run Code Online (Sandbox Code Playgroud) 我想知道 ReactJS 社区的首选道具命名约定是什么?
<TodoList todos={todos} onRemoveTodo={removeTodo} onCheckTodo={checkTodo} />
或者
<TodoList items={todos} onRemoveItem={removeTodo} onCheckItem={checkTodo} />
或任何其他方式?
谢谢!
VSCode 建立在 MonacoEditor 之上,MonacoEditor 不支持 Textmate 语法和主题。但不知何故 VSCode 使它成为可能。我很好奇 VSCode 是如何做到这一点的。
我问是因为我正在制作一个带有 TextMate 语法和主题支持的代码编辑器(基于 Monaco)。但我无法理解如何实现它。
尽管有一些软件包monaco-textmate可以使 TextMate 语法与 Monaco 一起使用,但语法突出显示仍然无法正常工作。
我有CSS代码
#box {
width: 200px;
height: 50px;
background-color: blue;
border-top-left-radius: 9999px;
border-bottom-left-radius: 9999px;
position: relative;
margin: 30px;
text-align: center;
color: white;
padding-top: 10px;
}
#box::before,
#box::after {
content: "";
width: 0;
height: 0;
right: 0;
position: absolute;
}
#box::before {
border-right: 10px solid blue;
border-top: 10px solid blue;
border-left: 10px solid transparent;
border-bottom: 10px solid transparent;
bottom: -20px;
}
#box::after {
border-right: 10px solid blue;
border-top: 10px solid transparent;
border-left: 10px solid transparent;
border-bottom: 10px solid blue;
position: absolute;
top: …Run Code Online (Sandbox Code Playgroud)我试图在javascript中实现一个反转给定数字(int/float)的函数.功能实现是
function reverseNumber(n) {
let reversed = 0;
const sign = Math.sign(n)
n *= sign;
const exponent = n.toString().indexOf('.');
if (exponent !== -1) n *= Math.pow(10, n.toString().length - 1 - exponent);
while (n !== 0) {
reversed *= 10;
reversed += n % 10;
n = Math.floor(n / 10);
}
if (exponent !== -1) reversed /= Math.pow(10, exponent);
return reversed * sign;
}
Run Code Online (Sandbox Code Playgroud)
此函数通过以下测试用例
expect(reverseNumber(0)).toEqual(0);
expect(reverseNumber(15)).toEqual(51);
expect(reverseNumber(90)).toEqual(9);
expect(reverseNumber(-5)).toEqual(-5);
expect(reverseNumber(-90)).toEqual(-9);
expect(reverseNumber(-2359)).toEqual(-9532);
expect(reverseNumber(12.403)).toEqual(304.21);
expect(reverseNumber(-12.4)).toEqual(-4.21);
Run Code Online (Sandbox Code Playgroud)
失败的唯一情况是输入时10.0.测试用例是
expect(reverseNumber(10.0)).toEqual(0.01);
Run Code Online (Sandbox Code Playgroud)
我没有找到任何方法来逆转10.0=> 0.01 …