小编nor*_*ial的帖子

React.js useState 和函数组件上的 Array.push 方法

我想用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)

javascript typescript reactjs

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

为什么 ref 总是为空?

我在下面有一个组件,在第一次渲染时我有正确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)

javascript reactjs

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

IE 浏览器不支持 Math.trunc()

以下代码在 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)

javascript

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

有没有没有换行符的 console.log ?

我想像console.log()这样没有换行符的数组

let myarr = [1,2,3,4,5];
myarr.forEach(e => console.log(e));
Run Code Online (Sandbox Code Playgroud)

javascript console.log

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

我怎样才能转换这个对象

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 属性

请帮忙

javascript

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

ReactJS TypeError:未定义不是一个函数(靠近'...this.state.data.map...')

我是 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 fetch reactjs

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

如何在 JavaScript 中使用反引号在 html 代码中使用变量?

我有一个变量,使用 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 反引号?有没有办法做到这一点?

答案将不胜感激!

html javascript css jquery

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

如何将带有逗号的字符串转换为带有主题标签的字符串 - ES6

如何将带有逗号的字符串转换为带有主题标签的字符串。有人可以帮忙吗?

到目前为止我尝试过的内容如下。它在使用时给出了单独的元素map。我如何使它成为单个字符串,并#附加在数组中的每个项目之前。

const tags = 'caramel,vanilla,chocolate';

const splitArray = tags.split(",").map(val=> console.log('#'+val));
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

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

在 Redux Saga 中 fork 与 map 功能

我是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)

这让我很困惑,我无法弄清楚地图不起作用的原因。

javascript reactjs redux-saga

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

状态变量钩子不适用于 useEffect 回调

尝试在 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 state websocket reactjs react-hooks

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