小编rai*_*ker的帖子

如何使用 React.memo 优化性能

我使用 React 前端制作了一个国际象棋游戏。最初,任何移动似乎都是瞬时实现的,但在添加了额外的功能(例如更改标题的背景以反映轮到谁(白色或黑色背景取决于白色的移动)和其他类似功能之后,我的应用程序明显变慢了。我怀疑是这些类型的 if 语句 -

const Details = props => {
    console.log(props.status);
    let [backGround, setBackGround] = useState("w details")
    const history = useHistory();

    if (props.status.white && backGround === "bl details"){
        setBackGround("w details")
    } else if (!props.status.white && backGround === "w details"){
        setBackGround("bl details")
    }
Run Code Online (Sandbox Code Playgroud)

这是有责任的,因为打印 props 的 console.log 每次移动都会打印它的语句 8 次(最初是两次)

我使用功能组件而不是类,我对优化的研究使我得出了以下解决方案-

React Hooks - 如何实现 shouldComponentUpdate?

如果不需要任何道具,我应该用 React.memo() 包装所有组件吗?

如何将 shouldComponentUpdate 与 React Hooks 一起使用?

所有这些都指向简单的情况,React.memo但我显然错过了一些东西,因为当我尝试实现它时,我得到的只是大量的“props”未定义错误(每次我使用很多 props 时都会出现一个错误)。

详情.jsx

import React, { useState } from 'react';
import …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

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

java的chars()流如何与reduce一起工作?它使用字符编码吗?

代码战争的挑战在于计算你必须将 Long 的各个整数相乘多少次才能成为一位数。例如

39 -> 3 * 9 = 27 -> 2 * 7 = 14 -> 1 * 4 = 4 // 答案是 3

这是已发布的解决方案之一 -

class Persist {
  public static int persistence(long n) {
    int times = 0;
    while (n >= 10) {
      n = Long.toString(n).chars().reduce(1, (r, i) -> r * (i - '0'));
      times++;
    }
    return times;
  }
}
Run Code Online (Sandbox Code Playgroud)

我对代码的“(i - '0')”部分感到非常困惑。我昨天才知道 Java 的 chars() 方法返回一个 IntStream 表示字符,所以立即使用 reduce 对我来说很有意义。但随后它减去了一个让我失望的字符,因为它似乎适用于它正在使用字符,但是它们是如何相乘的?

我复制了上面的代码,然后删除了字符减法,所以这是我理解的一个简单的reduce语句,也就是

n = Long.toString(n).chars().reduce(1, (r, i) -> …
Run Code Online (Sandbox Code Playgroud)

java char java-stream

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

标签 统计

char ×1

java ×1

java-stream ×1

react-hooks ×1

reactjs ×1