首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React+Laravel: Nivo在基于React路由器的导航中不能正常工作

React+Laravel: Nivo在基于React路由器的导航中不能正常工作
EN

Stack Overflow用户
提问于 2018-12-21 18:31:48
回答 1查看 362关注 0票数 0

我正在创建一个应用程序使用React和Laravel。我被导航部分卡住了。我正在index.blade.php文件中加载index.blade.php文件(包含nivo-滑块代码)。

代码语言:javascript
复制
<body class="home home-4">
    <!-- React App Container -->
    <div class="all">
        <div id="app"></div>
    </div>

    <!-- App JS -->
    <script src="{{URL::asset('js/app.js')}}" ></script>

    <!-- Vendor JS -->
    <script src="{{URL::asset('/libs/jquery/jquery.js')}}"></script>
    <script src="{{URL::asset('/libs/bootstrap/js/bootstrap.js')}}"></script>
    <script src="{{URL::asset('/libs/jquery.countdown/jquery.countdown.js')}}"></script>
    <script src="{{URL::asset('/libs/nivo-slider/js/jquery.nivo.slider.js')}}"></script>
    <script src="{{URL::asset('/libs/owl.carousel/owl.carousel.min.js')}}"></script>
    <script src="{{URL::asset('/libs/slider-range/js/tmpl.js')}}"></script>
    <script src="{{URL::asset('/libs/slider-range/js/jquery.dependClass-0.1.js')}}"></script>
    <script src="{{URL::asset('/libs/slider-range/js/draggable-0.1.js')}}"></script>
    <script src="{{URL::asset('/libs/slider-range/js/jquery.slider.js')}}"></script>
    <script src="{{URL::asset('/libs/elevatezoom/jquery.elevatezoom.js')}}"></script>

    <!-- Template JS -->
    <script src="{{URL::asset('js/main.js')}}"></script>

</body>

下面是我的应用程序组件,包含反作用路由器.

代码语言:javascript
复制
var React = require('react');
var ReactDOM = require('react-dom');

const Router = require('react-router-dom').BrowserRouter;
const Route = require('react-router-dom').Route;
const Switch = require('react-router-dom').Switch;

// var Nav = require('./Nav');
var Home = require('./components/Home');
var About = require('./components/About');
var Contact = require('./components/Contact');

ReactDOM.render(
    <Router>
        <div className="container">         
            <Route path="/" exact component={Home}></Route>
            <Route path="/home" component={Home}></Route>
            <Route path="/about" component={About}></Route>
            <Route path="/contact" component={Contact}></Route>
        </div>
    </Router>, document.getElementById('app'));

问题在于家庭组件上的导航。当应用程序首次加载时,它会正确地呈现Nivo Slider。但是当我点击任何导航链接并导航回主页时,Nivo Slider就会中断。

家庭部分:

代码语言:javascript
复制
........ // Some code here
class Home extends React.Component {
    render() {
        return(
            <div>
                <Header />
                <div id="content" className="site-content">
                    <div className="section slideshow">
                        <div className="container">
                            <div className="tiva-slideshow-wrapper">
                                <div id="tiva-slideshow" className="nivoSlider">
                                    <Link to="#">
                                        <img className="img-responsive" src="img/slideshow/home4-slideshow-1.jpg" alt="Slideshow Image" />
                                    </Link>
                                    <Link to="#">
                                        <img className="img-responsive" src="img/slideshow/home4-slideshow-2.jpg" alt="Slideshow Image" />
                                    </Link>
                                    <Link to="#">
                                        <img className="img-responsive" src="img/slideshow/home4-slideshow-3.jpg" alt="Slideshow Image" />
                                    </Link>
                                </div>
                            </div>
                        </div>
                    </div>
                   ........... // More Code to go

根据我的理解,它无法加载main.js,因为它的滑块是错误的行为。

第一次加载滑块部分:

代码语言:javascript
复制
<div class="section slideshow">
    <div class="container">
        <div class="tiva-slideshow-wrapper">
            <div id="tiva-slideshow" class="nivoSlider">
                <a href="/" class="nivo-imageLink" style="display: block;">
                    <img class="img-responsive" src="img/slideshow/home4-slideshow-1.jpg" alt="Slideshow Image" style="width: 1540px; visibility: hidden;">
                </a>
                <a href="/" class="nivo-imageLink" style="display: none;">
                    <img class="img-responsive" src="img/slideshow/home4-slideshow-2.jpg" alt="Slideshow Image" style="width: 1540px; visibility: hidden;">
                </a>
                <a href="/" class="nivo-imageLink" style="display: none;">
                    <img class="img-responsive" src="img/slideshow/home4-slideshow-3.jpg" alt="Slideshow Image" style="width: 1540px; visibility: hidden;">
                </a>
                <img class="nivo-main-image" src="img/slideshow/home4-slideshow-1.jpg" style="display: inline; width: 1540px; height: 686px;">
                <div class="nivo-caption" style="display: none;"></div>
                <div class="nivo-directionNav">
                    <a class="nivo-prevNav">Prev</a>
                    <a class="nivo-nextNav">Next</a>
                </div>
                <!-- Some of the nivo slider code goes here -->
            <div class="nivo-controlNav">
                <a class="nivo-control active" rel="0">1</a>
                <a class="nivo-control" rel="1">2</a>
                <a class="nivo-control" rel="2">3</a>
            </div>
        </div>
    </div>
</div>

导航后的滑块部分:

代码语言:javascript
复制
<div class="section slideshow">
    <div class="container">
        <div class="tiva-slideshow-wrapper">
            <div id="tiva-slideshow" class="nivoSlider">
                <a href="/">
                    <img class="img-responsive" src="img/slideshow/home4-slideshow-1.jpg" alt="Slideshow Image">
                </a>
                <a href="/">
                    <img class="img-responsive" src="img/slideshow/home4-slideshow-2.jpg" alt="Slideshow Image">
                </a>
                <a href="/">
                    <img class="img-responsive" src="img/slideshow/home4-slideshow-3.jpg" alt="Slideshow Image">
                </a>
            </div>
        </div>
    </div>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 14:31:39

componentDidMount()中添加loadjs包并调用它,以在路由后加载库。请查看下面的片段,以供参考。

代码语言:javascript
复制
componentDidMount() {
    loadjs('js/main.js', function() {
        console.log('Test');
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53889364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档