加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native – 如何正确地将导航重置为另一个视图

发布时间:2020-12-15 20:30:32 所属栏目:百科 来源:网络整理
导读:我正在使用此代码重置当前视图 NavigationActions.reset({ index: 0,key: null,actions: [ NavigationActions.navigate({ routeName: 'Login' }) ] }); 有时候它有效,有时我在Xcode的RCTUIManager.m文件中出现Signal Sigabrt错误.我无法弄清楚问题何时发生.
我正在使用此代码重置当前视图

NavigationActions.reset({ index: 0,key: null,actions: [ NavigationActions.navigate({ routeName: 'Login' }) ] });

有时候它有效,有时我在Xcode的RCTUIManager.m文件中出现Signal Sigabrt错误.我无法弄清楚问题何时发生.该函数发生错误

- (void)setSize:(CGSize)size forView:(UIView *)view
{
  RCTAssertMainQueue();

  NSNumber *reactTag = view.reactTag;
  dispatch_async(RCTGetUIManagerQueue(),^{
    RCTShadowView *shadowView = self->_shadowViewRegistry[reactTag];
    RCTAssert(shadowView != nil,@"Could not locate shadow view with tag #%@",reactTag); // ERROR in this line

    if (CGSizeEqualToSize(size,shadowView.size)) {
      return;
    }

    shadowView.size = size;
    [self setNeedsLayout];
  });
}

如果我删除函数上的代码,每件事都可以正常工作.
当没有崩溃时,控制台始终打印警告

View #1430 of type RCTView has a shadow set but cannot calculate
shadow efficiently. Consider setting a background color to fix this,
or apply the shadow to a more specific component.

但我没有使用阴影的任何视图,也无法弄清楚哪个反应原生元素正在做它.

编辑:
如果我检查shadowView不是null一切正常

if(shadowView){
    RCTAssert(shadowView != nil,@"Could not locate view with tag #%@",reactTag);
    }

这是RN中的Bug吗?

解决方法

我发现的解决方案是覆盖路由器的getStateForAction函数并处理重置.

所以你可以发送这样的东西:

NavigationActions.reset({ index: 0,actions: { navigateTo: 'Login' }});

并在自定义getStateForAction函数中处理此案例:

const defaultGetStateForAction = YourNavigator.router.getStateForAction

YourNavigator.router.getStateForAction = (action,state) => {
    if (action.type === NavigationActions.RESET && action.actions.navigateTo) {

      const updatedRoutes = [{routeName: action.actions.navigateTo}]

      return {
        ...state,routes: updatedRoutes,index: 0
      }
    }

    return defaultGetStateForAction(action,state)
}

在这里您可以阅读更多关于React Navigation – Custom Navigation Actions的信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读