React-native:如何在滑动时更改行的内容或样式?

标签 react-native swipe

当滑动项目会导致背景颜色和图标大小发生变化时,我希望拥有类似于 Google Inbox ( demo ) 的功能。

我的实现的 ListViewSwipeable组件作为行,我想根据滑动位置更改行的内容或样式(例如在右 Pane 中)。 为了让 ListView 在滑动时重新渲染,我添加了一个 pos 状态,并使用 SwipeableonPanAnimatedValueRef 属性进行设置。

问题是 ListView 不会重新渲染,也没有任何变化。

<ListView
    ...
    renderRow={(data) => (
                <Swipeable rightContent={
                        <View><Text>{this.state.pos}</Text></View>
                    }
                    ...
                    onPanAnimatedValueRef={(pan) => { 
                        pan.addListener(val => {
                            this.setState({
                                pos: val.x
                            });
                    }}>
                    {data}
                </Swipeable>
    )}
/>

你觉得这有什么问题吗?

最佳答案

我会将 Swipeable 包装在您自己的组件中,在那里保持状态和动画逻辑。 ListView 没有责任重新呈现整个内容,因为数据没有改变,只是行本身发生了变化。

或者,您可以通过 setState 将数据更改为 ListView 的数据源(大概是基于状态的,因此强制重新渲染,但这是一个较少的方法)有效路径)

关于React-native:如何在滑动时更改行的内容或样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47009576/

相关文章:

javascript - 滑动 2.0 : Changing the continuous nature of the slider

java - 点击 Android 滑动 fragment

java - 我正在尝试在 android 中制作可滑动的选项卡布局,但在操作栏中获取空值

jquery - 当幻灯片不在原始位置时,危险的刷卡链接不起作用

node.js - 我无法向服务器发送数据,也不能,也没有从服务器接收数据

javascript - react native android错误404

android - 无法在 native 调试版本上打开开发人员菜单

android - 如何在 Android 主屏幕的角落滑动启动应用程序,或者它可能是任何屏幕,如惰性滑动

react-native - 但是,这个包本身指定了一个无法解析的 `main` 模块字段

javascript - 使用 React Navigation 在 axios 请求后无法导航