小编Jam*_*uve的帖子

自定义钩子内的 setState 调用不会更新状态

我正在尝试设置一个基本的自定义钩子来返回 React Native 中的设备方向。我旁边有一个功能代码示例,我不知道为什么这不起作用。我认为这是某种关闭/范围问题,但显然我不知道。

我知道有更简单的方法可以获取设备方向,但我想知道为什么这不起作用以及如何使其工作。

当前行为:调用setOrientation不会改变 的值orientation。预期行为:调用setOrientation更新 的值orientation

一旦发生这种情况,我认为钩子会正常工作,因为null每次Dimensions更新时它都会返回。

[更新:为清晰起见编辑]


import { Dimensions, } from 'react-native';

function useDeviceDimensions() {

  const [orientation, setOrientation] = useState(null);

  useEffect(() => {
    const setDimensions = (e) => {
      console.log('running', orientation); // null
      const {width, height} = e.window;
      setOrientation(width > height ? 'landscape' : 'portrait');
    };

    Dimensions.addEventListener('change', setDimensions);

    return () => Dimensions.removeEventListener('change', setDimensions);
  }, [])

  return orientation;
}

export default useDeviceDimensions;```
Run Code Online (Sandbox Code Playgroud)

javascript closures reactjs react-native react-hooks

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

猫鼬 findOneAndUpdate 为 err 和 doc 返回 null(使用 Jest)

我正在使用 Mongoose 的 findOneAndUpdate 方法,但似乎无法从中获取任何有用的信息。我试过使用调用它返回的查询(在updatedUser),但它返回null;我也试过包含回调参数,但是当我这样做时,我会同时null返回errdoc

上下文:我正在使用 Jest 构建测试套件,并为此功能编写测试。我已经在测试套件之外的应用程序中使用了该函数,虽然我更改了该函数的部分内容,但我没有在 findOneAndUpdate 调用中更改任何内容,除了添加回调参数。

预期行为: 'err' 或 'doc' 不返回 null 所以我至少知道发生了什么。

我和 Mocha 一起工作,我正在学习 Jest,我发现了 Jest 做的其他一些有趣的事情。我从经验中知道,这很可能是我遗漏了一些相当明显的东西,但我希望能够一次归咎于其他事情。:)

更新用户.js:

const updateUser = async (user) => {

  console.log('user in updater:', user);

  const updatedUser = await User.findOneAndUpdate(
    { _id: user._id },
    {
      $set: {
        name: user.name,
        email: user.email,
        password: user.password,
        ageRange: user.ageRange,
        gender: user.gender,

        accountCreatedAt: user.accountCreateAt,
        meetingPlaces: user.meetingPlaces,
        flags: user.flags,
        tokens: user.tokens,
      }
    },
    { new: true …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js jestjs

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