我想用useState钩子改变状态的值,但我以前从未useState在功能组件中使用钩子,我得到了一个非常奇怪的错误。即使我将所有变量定义为string[],它也会尝试将整个数组定义为number。
import * as React from 'react'
import { NextPage } from 'next'
const IndexPage: NextPage = () => {
const [countries, setCountries] = React.useState<string[]>([])
return (
<>
{
["Dallas", "Oregon", "New York", "California"].map((x: string) =>
<button onClick={() => setCountries(countries.push(x))}>
<span>{x}</span> ^^^^^^^^^^^^^^^^^
</button>
)
}
<>
)
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的奇怪错误:
import * as React from 'react'
import { NextPage } from 'next'
const IndexPage: NextPage = () => {
const [countries, setCountries] = …Run Code Online (Sandbox Code Playgroud) 我在下面有一个组件,在第一次渲染时我有正确ref的输入,但是我总是null在下一次渲染时得到 ,请告诉我为什么?ref通过 props 传递到输入:
const inputRef = useRef(null);
useEffect(() => {
setTimeout(() => {
if (inputRef.current) {
inputRef.current.focus();
}
});
}, [inputRef]);
render() {
return(
<div>
<FirstComponent />
{({ selectedItem, items }) => (
<SecondCompontnt
inputRef={inputRef}
items={items}
onSelect={onSelect}
value={selectedItem}
/>
)}
</div>
)
}
Run Code Online (Sandbox Code Playgroud) 以下代码在 Chrome 中运行良好,但在 IE 浏览器中,我看到以下控制台错误:
对象不支持属性或方法“trunc”
代码:
var Days = (new Date(date1) - new Date(date2)) / 50;
if (Math.trunc(Days) > 45)) {
alert("it should be less than 45 days");
}
Run Code Online (Sandbox Code Playgroud) 我想像console.log()这样没有换行符的数组
let myarr = [1,2,3,4,5];
myarr.forEach(e => console.log(e));
Run Code Online (Sandbox Code Playgroud) const obj = {
acc: 34.4,
code: 26.94,
effect: 0,
level: "D",
avg_upper_20: "C",
}
Run Code Online (Sandbox Code Playgroud)
如何将上述对象转换为这种类型的数组
[{subject: 'acc', score: 34.4}, {subject: 'code', score: 26.94}, {subject: 'effect', score: 0}]
Run Code Online (Sandbox Code Playgroud)
不包括 level 和 avg_upper_20 属性
请帮忙
我是 React 新手,正在尝试学习它。我正在从 API 获取数据并且我将使用这些数据。它返回基于“美元”的汇率。我将使用该数据来兑换货币,但我收到此错误:此处错误
我不知道问题是什么。
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor (props) {
super(props)
this.state = {data: 'false'};
}
componentDidMount(){
this.getData();
}
getData = () => {
fetch("https://openexchangerates.org/api/latest.json?app_id=88a3d2b24b174bf5bec485533a3bca88")
.then(response => {
if (response.ok) {
return response;
} else {
let errorMessage =
'${response.status(${response.statusText})',
error = new Error(errorMessage);
throw(error);
}
})
.then(response => response.json())
.then(json =>{
console.log(json);
this.setState({ data: json.data })
});
}
render() {
return (
<div className="App">
<header …Run Code Online (Sandbox Code Playgroud) 我有一个变量,使用 JavaScript 反引号定义了几个值。如何使用带有反引号的另一个变量?
var liElem = '';
$('button').click(function(){
var newData = 'This is new data'
liElem = `<ul>
<li class=" ' + newData + ' ">Good news</li>
<li class="icon-text-dark-yellow">Fair</li>
<li class="icon-text-dark-red">Poor</li>
<li class="icon-text-light-gray">N/A</li>
</ul>`;
console.log(liElem);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>click</button>Run Code Online (Sandbox Code Playgroud)
为什么newData变量里面不可读?JavaScript 反引号?有没有办法做到这一点?
答案将不胜感激!
如何将带有逗号的字符串转换为带有主题标签的字符串。有人可以帮忙吗?
到目前为止我尝试过的内容如下。它在使用时给出了单独的元素map。我如何使它成为单个字符串,并#附加在数组中的每个项目之前。
const tags = 'caramel,vanilla,chocolate';
const splitArray = tags.split(",").map(val=> console.log('#'+val));Run Code Online (Sandbox Code Playgroud)
我是redux-saga的初学者,我对以下情况感到困惑。我有一个 items 数组,我想为每个项目分叉相同的方法。所以我使用这行代码:
yield items.map(item => fork(loadItemDetails, item));
Run Code Online (Sandbox Code Playgroud)
使用上述代码,loadItemDetails永远不会调用。相反,如果我fork单独调用每个项目,如下所示,那么它会按预期工作。
yield fork(loadItemDetails, items[0]);
yield fork(loadItemDetails, items[1]);
yield fork(loadItemDetails, items[2]);
Run Code Online (Sandbox Code Playgroud)
这让我很困惑,我无法弄清楚地图不起作用的原因。
尝试在 React 功能组件中建立 WebSocket 连接,并使用钩子更新状态变量,如下所示 [参考 1]:
export default function foo() {
const [ arr, setArr ] = useState([])
ws = useRef(null)
useEffect( () => {
ws.current = new Websocket('ws://example.com:1234')
ws.current.onmessage = (m) => {
setArr([...arr, m])
})
}, []) // Runs once at mount
}
Run Code Online (Sandbox Code Playgroud)
的状态arr未保留。它被覆盖。
注意我也尝试传递arr到效果中,就像这样,但这导致了无限循环。[参考文献 2]。随着 arr 的更新,效果被称为...
})
}, [arr])
}
Run Code Online (Sandbox Code Playgroud)
举一个更具体的例子,取三个 websocket 消息:
['a']
['b']
['c']
Run Code Online (Sandbox Code Playgroud)
更新后每条消息的预计到达时间
['a']
['a', 'b']
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
结果:
['a']
['b']
['c']
Run Code Online (Sandbox Code Playgroud)
为什么不与回调中的钩子arr一起存储? …
javascript ×10
reactjs ×5
console.log ×1
css ×1
ecmascript-6 ×1
fetch ×1
html ×1
jquery ×1
react-hooks ×1
redux-saga ×1
state ×1
typescript ×1
websocket ×1