我正在尝试设置一个基本的自定义钩子来返回 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) 我正在使用 Mongoose 的 findOneAndUpdate 方法,但似乎无法从中获取任何有用的信息。我试过使用调用它返回的查询(在updatedUser),但它返回null;我也试过包含回调参数,但是当我这样做时,我会同时null返回err和doc。
上下文:我正在使用 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 ×2
closures ×1
jestjs ×1
mongoose ×1
node.js ×1
react-hooks ×1
react-native ×1
reactjs ×1