简体   繁体   English

<Link>单击时冻结页面

[英]<Link> freezing page when clicked

I'm building a piece of music streaming app with a Rails backend and react-redux frontend. 我正在用Rails后端和react-redux前端构建一个音乐流应用程序。 A react-router Link from an artist index to an art show is freezing the browser. 从艺术家索引到艺术品展览的React-Router链接冻结了浏览器。

Links in other parts of the page are working fine, including Links to artist show pages. 页面其他部分的链接也可以正常工作,包括指向艺术家表演页面的链接。 This Link works with an 'open in new tab' right click. 右键单击“在新选项卡中打开”可使用此链接。

// from artist_index.jsx
import React from 'react';
import { Link } from 'react-router-dom';

class ArtistIndex extends React.Component {
  render() {
    return (
      <div className="artist-index">
        <ul className="artist-index-list">
          {this.props.artists.map(artist => {
            return <li key={artist.id}>
              <Link to={`/artist/${artist.id}`}>{artist.name}</Link>
            </li>
          })}
        </ul>
      </div>
    );
  };
};

export default ArtistIndex;


// from root.jsx
import React from 'react';
import { Provider } from 'react-redux';
import { HashRouter } from 'react-router-dom';
import App from './App';

const Root = ({ store }) => (
  <Provider store={store}>
    <HashRouter>
      <App />
    </HashRouter>
  </Provider>
);

export default Root;

All other Links are working properly. 所有其他链接均正常运行。 This is receiving the props correctly, and changing the browser's url, just not actually completing the redirect. 这是正确接收道具,并且正在更改浏览器的url,只是实际上并未完成重定向。 In fact, it freezes up the browser completely. 实际上,它完全冻结了浏览器。 Artist Show is working. 艺术家表演正在工作。

When you want to use react-router-dom, you should use Router, Switch, Route, Link from "react-router-dom" 当您要使用react-router-dom时,应使用“ react-router-dom”中的Router,Switch,Route,Link

for example, consider these files: 例如,考虑以下文件:

in index.js index.js中

import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter} from 'react-router-dom';
import App from './app/App';

ReactDOM.render(
    <BrowserRouter>
      <App />
    </BrowserRouter>, document.getElementById('root'));

in App.js App.js中

import React from "react"
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom"

import categoryIndex from "../components/category/index"
import productIndex from "../components/product/index"

clas App extends Component {
   render(){
     return (
      <Router>
        <div className="container"
          <Link to={"/category/index"} className="nav-link">
            Categories
          </Link>
          <Link to={"/products/index"} className="nav-link">
            Products
          </Link>
        <Switch>
          <Route path="/category/index" component={categoryIndex} />
          <Route path="/product/index" component={productIndex} />
        </Switch>
      </div>
    </Router>
  );
 }
}

export default App;

and then in your target file: 然后在您的目标文件中:

<div id='createNewProduct'>
    <Link to={"/product/create"}>
       + Create New Product
    </Link>
</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM