- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我正在为 React Native v0.66 中的一家初创公司构建一个原型(prototype) android 应用程序作为实习项目。当我建立项目时,我是 RN 的新手,但不是 React。我对导航的选择落在了 React Navigation 6.x 和他们的 Native Stack Navigator 上。因为它比常规的 Stack Navigator 表现更好,尽管根据文档不能自定义。
现在我想在我的项目中使用 react-native-gesture-handler。根据their docs ,
“如果你使用像 wix/react-native-navigation 这样的原生导航库,你需要遵循不同的设置才能让你的 Android 应用正常工作。原因是原生导航库和 Gesture Handler 库都需要使用自己特殊的ReactRootView 的子类。
您需要在 JS 端使用gestureHandlerRootHOC 包装每个屏幕组件,而不是更改Java 代码。例如,这可以在您注册屏幕的阶段完成。”
我想这也包括 React Navigation-Native Stack Navigator?有关于如何使用 wix/react-native-navigation 实现 RNGH 的代码示例,但在我的情况下,在任何地方都没有:
import { gestureHandlerRootHOC } from 'react-native-gesture-handler';
import { Navigation } from 'react-native-navigation';
import FirstTabScreen from './FirstTabScreen';
import SecondTabScreen from './SecondTabScreen';
import PushedScreen from './PushedScreen';
// register all screens of the app (including internal ones)
export function registerScreens() {
Navigation.registerComponent(
'example.FirstTabScreen',
() => gestureHandlerRootHOC(FirstTabScreen),
() => FirstTabScreen
);
Navigation.registerComponent(
'example.SecondTabScreen',
() => gestureHandlerRootHOC(SecondTabScreen),
() => SecondTabScreen
);
Navigation.registerComponent(
'example.PushedScreen',
() => gestureHandlerRootHOC(PushedScreen),
() => PushedScreen
);
}
我的 app.js(我设置 Native Stack Navigator 的地方)如下所示:
import { gestureHandlerRootHOC } from 'react-native-gesture-handler';
import React from 'react';
import { Provider } from 'react-redux';
import { Store } from './redux/store';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import MenuScreen from './screens/Menu';
import HomeScreen from './screens/Home';
import MyShopsScreen from './screens/MyShops';
import AddProductScreen from './screens/AddProduct';
import ProductDetailsScreen from './screens/ProductDetails';
const Stack = createNativeStackNavigator();
function App() {
return (
<Provider store={Store}>
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown: false
}}>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Menu" component={MenuScreen} />
<Stack.Screen name="MyShops" component={MyShopsScreen} />
<Stack.Screen name="AddProduct" component={AddProductScreen} />
<Stack.Screen name="ProductDetails" component={ProductDetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
</Provider>
);
};
export default App;
在我开始尝试让手势处理程序工作之前,我真的想以正确的方式进行设置,否则我可能无法判断它是错误的设置还是我的手势处理程序的实现。
<Stack.Screen name="Home" component={HomeScreen} />
至
<Stack.Screen name="Home" component={gestureHandlerRootHOC(HomeScreen)} />
?
export default gestureHandlerRootHOC(someComponent)
还是我走远了?欢迎任何帮助。
//#region Pinch to Zoom Gesture
// The gesture handler maps the linear pinch gesture (0 - 1) to an exponential curve since a camera's zoom
// function does not appear linear to the user. (aka zoom 0.1 -> 0.2 does not look equal in difference as 0.8 -> 0.9)
const onPinchGesture = useAnimatedGestureHandler<PinchGestureHandlerGestureEvent, { startZoom?: number }>({
onStart: (_, context) => {
context.startZoom = zoom.value;
},
onActive: (event, context) => {
// we're trying to map the scale gesture to a linear zoom here
const startZoom = context.startZoom ?? 0;
const scale = interpolate(event.scale, [1 - 1 / SCALE_FULL_ZOOM, 1, SCALE_FULL_ZOOM], [-1, 0, 1], Extrapolate.CLAMP);
zoom.value = interpolate(scale, [-1, 0, 1], [minZoom, startZoom, maxZoom], Extrapolate.CLAMP);
},
});
//#endregion
我也无法在任何地方找到使用gestureHandlerRootHOC(),但至少我知道可以结合react-native-gesture-handler 和Native Stack Navigator。
最佳答案
我只是选择了:
<Stack.Screen name="Home" component={HomeScreen} />
至
<Stack.Screen name="Home" component={gestureHandlerRootHOC(HomeScreen)} />
并像这样包裹每个屏幕。在所有嵌套组件中也像魅力一样工作。欢迎使用这种方法提出警告或陷阱。我暂时接受这个答案。
关于javascript - 如何使用 React Navigation 6.x Native Stack Navigator (RN>0.6) 实现 React-native-gesture-handler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70117194/
添加 Rn,#1 ADDS Rd, Rn, #1 ARM 文档指定在第一条指令中,如果 Rd 是可选的,如果省略,则 Rd 等于 Rn。所以编译时两条指令应该是相同的。但是我们的编译器正在生成: 0x
11/04 更新: 我已经用一个应用程序创建了一个代码库,它在下面演示了这个问题。任何想要安装和使用它的人都可以在这里找到它...... https://github.com/geirman/reac
我必须从卡片列表中选择一张或两张卡片,点击每张卡片/复选框后,该卡片就会突出显示(并被选中)。每张卡上都有复选框,显示通过其进行选择的特定卡。您可以重新点击同一复选框以取消选择它。 我对原生 reac
只要帖子之间有空格,它就会显示 rn。这是我读取插入数据的方式: $content_of_post_original = mysql_real_escape_string($_POST['post_c
我正在尝试配置 Azure AD B2C 应用程序以实现 native react 并使用 this lib对于 react native 。它适用于 IOS,但对于 Android,我遇到以下错误。
我有一个水平平面列表,其中每个项目的宽度为宽度:300我想做的就是获取当前可见项目的索引。 this.handleScroll(e)} horizontal={true}
我有一个基于官方文档中的简单示例的工作代码: https://docs.expo.io/versions/latest/sdk/camera和 https://docs.expo.io/version
我想使用属性值来动态添加颜色 - 与父 View 相关。 我有以下 - © Copyright 2019 LRM Security Ltd 将通过以下方式设置样式: const copy
我的 state 对象中有一个空白数组。该数组将包含一些具有键值对的对象。 这是我的代码: import * as React from 'react'; import { Text, ScrollV
仅当作为参数传递的值为 True 使用函数返回时,我才需要在 touchableOpacity 中显示一个图标。 请指导我,因为它显示了 renderIcon() 函数的一些错误。 const Car
我已应用正确的 css 属性使容器居中,但容器仍未居中。特别是 justifyContent 和 alignItems。我不想将里面的东西居中,而只是将容器居中。我怎样才能做到这一点? functio
我正在关注 detox mocking guide与 typescript 。该应用程序始终打印 X.ts 的 console.log文件而不是 X.e2e.ts文件。 依赖版本。 react-nat
我有这段代码,当我运行该程序时,我得到的只是白屏。没有错误,我可以看到我的日志,所以我知道程序呈现并运行。我的猜测是, 存在一些问题。风格,但我无法解决这个问题。 所以这里的逻辑是,我基本上在渲染 V
我的 RN 应用程序中有以下代码。 handleTextChange = e => { this.setState({ value: e }) } 我使用 TS,这表示“参数 'e' 隐式具有 '
我正在实现自己的模块,但在快速将参数传递到函数中时遇到问题。该函数应该返回 Promise。它总是因这个错误而崩溃 异常“getPassesOf:不是可识别的 Objective-C 方法。”在使用参
我们经常使用这些术语。但为何如此命名尚不清楚。 最佳答案 Rd:目标寄存器 Rn:寄存器中用于算术运算的操作数。 Rm:寄存器中用于算术运算的操作数。 Ra:寄存器中用于加法或减法的值。想想“蓄能器”
如何在 React Native Flatlist 中列出 2 列,例如: 最佳答案 只需通过 Prop numColumns到您的 FlatList 组件。 关于react-native - RN
我正在实现自己的模块,但在快速将参数传递到函数中时遇到问题。该函数应该返回 Promise。它总是因这个错误而崩溃 异常“getPassesOf:不是可识别的 Objective-C 方法。”在使用参
我们经常使用这些术语。但为何如此命名尚不清楚。 最佳答案 Rd:目标寄存器 Rn:寄存器中用于算术运算的操作数。 Rm:寄存器中用于算术运算的操作数。 Ra:寄存器中用于加法或减法的值。想想“蓄能器”
最近我检查了 ARM Cortex-M3 处理器的指令集。 例如: ADD , , 这些缩写到底是什么意思? 我猜他们的意思是不同类型的地址,比如直接寻址、相对寻址等等。 但究竟是什么? 谢谢! 最
我是一名优秀的程序员,十分优秀!