小编Qro*_*aki的帖子

如何仅访问一次 React Redux 值?

我只想从 redux 存储中获取一次值,并在 useEffect 函数内使用一次。

但是 useSelector 需要位于组件的根级别,因此每次渲染都会运行它。这意味着如果我的 redux 存储中的值被更新,所有子组件也会更新。

我不希望这种事发生。(由于某种原因,redux 更新中断了我的一些动画)。我只希望它在安装组件时访问 useSelector 一次。

我怎样才能做到这一点?

当前的不良行为:

const Test = () => {
    const select = useSelector(state=> state); // updates every dispatch
    
    useEffect(()=> {
       console.log(select.value);
       }, []);
...
}
Run Code Online (Sandbox Code Playgroud)

想要的行为,如果反应会让我......

const Test = () => {
    useEffect(()=> {
       const select = useSelector(state=> state); // only accessed once, doesn't update children on later dispatches
       console.log(select.value);
       }, []);
...
}
Run Code Online (Sandbox Code Playgroud)

reactjs redux

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

如何使用 useState hook 一次更新多个状态?

在功能组件中,我们对类组件使用 useState 而不是 this.setState。但据我所知,useState 一次只能设置一个状态,而 setState 可以一次设置多个状态(例如 this.setState({a1: true, a2: false}))。

这是否意味着如果您想使用 useState 同时设置两个状态,您会得到双重重新渲染,这是低效的?有办法解决这个问题吗?

javascript react-native react-functional-component use-state

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

后卫如何影响比赛陈述?

我简化了学习 rust by example - Guards 中出现的一个示例:https://doc.rust-lang.org/rust-by-example/flow_control/match/guard.html

    let number: u8 = 4;

    match number {
        i if i == 0 => println!("Zero"),
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的示例会导致有关匹配情况不全面的编译错误。我不知道为什么。文章说“请注意,编译器在检查匹配表达式是否涵盖所有模式时不会考虑保护条件。” 但下面的示例不会导致编译错误:

match number {
    i => println!("Zero"),
}
Run Code Online (Sandbox Code Playgroud)

不同的是我去掉了守卫。如果不应该考虑守卫,为什么会影响事情呢?

rust

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

为什么 Headless 需要为 false 才能让 Puppeteer 工作?

我正在创建一个 Web api,它可以抓取给定的 url 并将其发回。我正在使用 Puppeteer 来做到这一点。我问了这个问题:Puppeteer 的行为不像开发者控制台

并收到一个答案,表明只有当 headless 设置为 false 时它才有效。我不想不断打开我不需要的浏览器用户界面(我只需要数据!),所以我正在寻找为什么 headless 必须为 false,我可以得到一个修复程序,让 headless = true 。

这是我的代码:

express()
  .get("/*", (req, res) => {
    global.notBaseURL = req.params[0];
    (async () => {
      const browser = await puppet.launch({ headless: false }); // Line of Interest
      const page = await browser.newPage();
      console.log(req.params[0]);
      await page.goto(req.params[0], { waitUntil: "networkidle2" }); //this is the url
      title = await page.$eval("title", (el) => el.innerText);

      browser.close();

      res.send({
        title: title,
      });
    })();
  })
  .listen(PORT, () => …
Run Code Online (Sandbox Code Playgroud)

javascript web-scraping puppeteer

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