mochixuan / react-native-smart-tip

🔥🔥🔥Toast , SnackBar , Modal , Show Toast above Modal
248 stars 38 forks source link

关于 Toast 显示在 Modal 上方 #19

Closed HeyShinner closed 4 years ago

HeyShinner commented 4 years ago

image

这个解决方法和我在 native-base 的 issue 里看到的类似,链接如下: https://github.com/GeekyAnts/NativeBase/issues/985

但是有些应用场景貌似不太适用,比如一个 Page 包含一个 Modal,需要满足既能够在页面显示 Toast 又能在 Modal 显示时 Toast 能显示在 Modal 上方。

麻烦您看一下(^▽^)

mochixuan commented 4 years ago

这个是单独解决Modal的提示问题。如果要在Modal外可以使用正常的Toast就可以。不知道我理解的对不对。(在iOS里面不能同时显示两个Modal)

HeyShinner commented 4 years ago
import { ModalShowToastView, WToast } from 'react-native-smart-tip'

getToastInstance = (toastInstance) => {
  this.toastInstance = toastInstance;
}

<View>
  <Button onPress={() => WToast.show({data: 'Modal 未显示时的 Toast'})} />
  <Modal>
    <View>
      <ModalShowToastView toastInstance={this.getToastInstance} />
    </View>
  </Modal>
</View>

this.toastInstance({data: 'Modal 显示时的Toast'})

@mochixuan 是这个意思吗~

mochixuan commented 4 years ago

明白为什么要这么做的原理有两个限制。

  1. Modal是原生的Modal,层级大于React-Native组件。所以这就出现市面上几乎所有Toast不能显示在Modal上面。
  2. Modal上显示Modal行不行?答案不行。iOS同一时间只能显示一个Modal,除非Modal嵌套Modal是可以。
  3. 所以我想到的只要在Modal里面的View上实现一个View这一个方法,所以才出现了这个ModalShowToastView,你也可以自己实现一个。应该暂时没有别的方法了。
HeyShinner commented 4 years ago

@mochixuan 明白了,我试试,谢谢 (^▽^)