小编eja*_*son的帖子

iOS 模拟器无法正确滚动(M1 + React Native 项目)

在 M1 MacBook Pro 的模拟器上运行我的 React Native 项目。ScrollViews 在模拟器中不能正确滚动。Big Sur 和 M1 的这个设置只有一个问题。适用于其他计算机和真实设备。

当我滑动时,视图会滚动,但它需要很大的“力”,并且视图在我滚动时似乎滞后。此外,它会在我松开按钮时立即停止(不会按预期继续滚动)。

还有其他人遇到这个问题吗?

设置:

  • M1 mac
  • 罗塞塔航站楼
  • Xcode 12.2、CoreSimulator 732.18.0.2(iPhone 11、iOS 14.0)
  • 反应本机 0.63.2

ios react-native apple-silicon

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

在 React Native 中测试 onLayout

我正在尝试使用 @testing-library/react-native 测试使用 onLayout 事件的组件,该组件通过组件道具使用 setState 函数,但从未调用该函数:

expect(jest.fn()).toHaveBeenCalledWith(...expected)

Expected: 100

Number of calls: 0
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这项工作?怎么了?

成分:

type Props = {
  children: React.ReactNode
  setHeaderHeight: React.Dispatch<React.SetStateAction<number>>
}

const HeaderSetHeightWrapper = ({ children, setHeaderHeight }: Props) => {
  return (
    <Wrapper
      onLayout={({
        nativeEvent: {
          layout: { height }
        }
      }) => {
        setHeaderHeight(Math.floor(height))
      }}
      testID="header-h"
    >
      {children}
    </Wrapper>
  )
}

const Wrapper = styled.View`
  position: absolute;
  left: 0;
  top: 0;
`

Run Code Online (Sandbox Code Playgroud)

测试:

it('should set the header height on layout', async () => { …
Run Code Online (Sandbox Code Playgroud)

react-native react-testing-library

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