react link不跳转怎么办,解决方法是什么?

Admin 2022-01-14 群英技术资讯 698 次浏览

    react link不跳转怎么办?对于出现react router native:link点击不跳转的问题,有一些朋友不知道怎样解决,对此这篇针对下面的示例小编和大家一起来分析解决看看,需要的朋友就继续往下看吧。

    本文操作环境:Windows7系统、react17.0.1、Dell G3。

    如何解决react link不跳转问题?

    react router native:link点击不跳转

    rn嵌入原生,出现点击TouchableOpacity组件内容没反应、不跳转的情况

// App.js
const history = createMemoryHistory()
<Router history={ history }>
    <Switch>
        <Route path="/" component={ Home }/>
        <Route path="/test" component={ Test } />
    </Switch>
</Router>


// Home.js
<View>
    <Link to="/test">
        <TouchableOpacity key={ text } style={ styles.wrapper }>
            <Text style={ styles.text }>{ text }</Text>
        </TouchableOpacity>
    </Link>
</View>

    1、关闭JS Remotely

    不知为何开了远程调试后导致TouchableOpacity失效。关闭后点击能看到TouchableOpacity效果,仍然不能跳转

    2、给根路径route组件增加extra

// App.js
<Router history={ history }>
    <Switch>
        <Route extra path="/" component={ Home }/> // 增加extra
        <Route path="/test" component={ Test } />
    </Switch>
</Router>

    因为不熟悉rn开发,最初担心是使用了createMemoryHistory导致的,后来又担心页面跳转了但是被挡住之类的,思路一直偏了

    最后老老实实到github上找了一个基础的项目,一点点找不同,才发现是这个被忽视的问题

    原理其实很简单 :

        exact是Route下的一条属性,一般而言,react路由会匹配所有匹配到的路由组价,exact能够使得路由的匹配更严格一些。

  exact的值为bool型,为true是表示严格匹配,为false时为正常匹配。

  如在exact为true时,’/link’与’/’是不匹配的,但是在false的情况下它们又是匹配的。

  一个常用的场景是这样的:

<Route path='/' component={Home} />
<Route path='/page' component={Page}>
//这种情况下,如果匹配路由path='/page',那么会把Home也会展示出来。

  所以我们经常添加exact来解决上述问题。

<Route exact path='/' component={Home} />
<Route path='/page' component={Page} />

    我有这个问题是因为router4.x使用多层嵌套路由报了warning,调整之后反而暴露不认真读原理的问题,惭愧

    3、将TouchableOpacity作为link组件的属性传入

const linkParams = {
    pathname: '/star',
    state: { data: item },
}

<Link to={ linkParams } component={ TouchableOpacity }>
    <Item text={ item.text } index={ index }/>
</Link>

    <link>里面有<TouchableOpacity>会导致不跳转

    对于react link不跳转问题的解决方法就介绍到这,需要的朋友可以参考上述解决方法,希望能对大家有帮助。想要了解更多其他的相关问题,大家可以关注群英网络其它相关文章。

文本转载自PHP中文网

群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服