【发布时间】:2021-08-03 17:49:51
【问题描述】:
我对此感到头疼,我看到的行为对我来说似乎很奇怪,尽管对你们中的一些人来说可能是有道理的。
考虑这个组件:
const DishPreparation = ({ dish }) => {
const [slideIndex, setSlideIndex] = useState(0)
const sceneRef = useRef(null)
useKeepAwake();
return (
<View style={styles.scene} ref={sceneRef}>
<View flex={0.12} style={{ marginTop:-10 }}>
<ProgressSteps activeStep={slideIndex} activeStepIconBorderColor={colors.lightTan} completedProgressBarColor={colors.lightTan} completedStepIconColor={colors.lightTan}>
{dish.preparationSteps.map((step, index) => (
<ProgressStep removeBtnRow key={index}/> ))}
</ProgressSteps>
......
)
这是通过另一个组件Dish 呈现的,可以导航到。我的应用程序中有一些浮动组件,允许我使用特定的菜导航到Dish。如果我第一次通过它导航到一道菜,或者如果我通过将组件推送到堆栈来通过其他组件导航到那里,一切正常。奇怪的行为是,当我已经在这个带有特定盘子的组件中,然后通过浮动组件导航到另一个盘子时,就像保留了旧盘子一样。
假设第一道菜在 dish.preparationSteps 中有 3 个元素,第二道菜有 4 个,那么 dish.preparationSteps.map(step, index) 只返回 3 个元素而不是 4,但是如果我在映射中渲染 step.someInfo,那么我实际上看到了新的菜肴价值。
这是怎么回事?我希望返回 4 个元素,或者返回 3 个元素但使用旧菜值,这种混合是如何发生的?另外,不知道它是否有帮助,但 slideIndex 保持其旧值,并且不会重新初始化为 0。
这就是我浏览浮动组件的方式:
navigation.navigate('Tabs', {
screen: 'Home',
params: { screen: 'Dish', params: { from: '', data: dish } },
})
这就是我通过其他一些其他组件导航到它的方式(按预期工作)
navigation.push('Dish', {from: 'DishList', data: item})
如果需要任何其他代码,我很乐意添加。
【问题讨论】:
-
您能否通过 github 或 expo snap 提供一个具有最少代码的工作示例?
标签: react-native navigation state render