রিঅ্যাক্ট-রাউটার ভি 4-র জন্য , এখানে একটি ক্রিয়েট -রিএ্যাক্ট-অ্যাপ্লিকেশন রয়েছে যা স্ক্রোলটি পুনরুদ্ধার করে: http://router-scrol-top.surb.sh/ ।
এটি অর্জনের জন্য আপনি Routeউপাদানটি সাজাতে এবং জীবনধারণের পদ্ধতিগুলি তৈরি করতে পারেন :
import React, { Component } from 'react';
import { Route, withRouter } from 'react-router-dom';
class ScrollToTopRoute extends Component {
componentDidUpdate(prevProps) {
if (this.props.path === this.props.location.pathname && this.props.location.pathname !== prevProps.location.pathname) {
window.scrollTo(0, 0)
}
}
render() {
const { component: Component, ...rest } = this.props;
return <Route {...rest} render={props => (<Component {...props} />)} />;
}
}
export default withRouter(ScrollToTopRoute);
উপর componentDidUpdateআমরা চেক করতে পারেন অবস্থান পথনাম পরিবর্তন এবং তা মেলে pathযদি ঐ সন্তুষ্ট ঠেকনা এবং, উইন্ডোর স্ক্রল ফিরিয়ে আনুন।
এই পদ্ধতির সম্পর্কে যা শীতল তা হ'ল আমাদের কাছে এমন রুট থাকতে পারে যা স্ক্রোলটি পুনরুদ্ধার করে এবং স্ক্রোল পুনরুদ্ধার করে না এমন রুটগুলি।
আপনি উপরেরটি App.jsকীভাবে ব্যবহার করতে পারেন তার একটি উদাহরণ এখানে দেওয়া হয়েছে :
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import Lorem from 'react-lorem-component';
import ScrollToTopRoute from './ScrollToTopRoute';
import './App.css';
const Home = () => (
<div className="App-page">
<h2>Home</h2>
<Lorem count={12} seed={12} />
</div>
);
const About = () => (
<div className="App-page">
<h2>About</h2>
<Lorem count={30} seed={4} />
</div>
);
const AnotherPage = () => (
<div className="App-page">
<h2>This is just Another Page</h2>
<Lorem count={12} seed={45} />
</div>
);
class App extends Component {
render() {
return (
<Router>
<div className="App">
<div className="App-header">
<ul className="App-nav">
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/another-page">Another Page</Link></li>
</ul>
</div>
<Route exact path="/" component={Home} />
<ScrollToTopRoute path="/about" component={About} />
<ScrollToTopRoute path="/another-page" component={AnotherPage} />
</div>
</Router>
);
}
}
export default App;
উপরের কোড থেকে, কীটি আকর্ষণীয় তা উল্লেখ করা হ'ল কেবল যখন নেভিগেট করা হবে /aboutবা /another-pageশীর্ষ ক্রিয়ায় স্ক্রোলটি প্রিফাইম হবে। যাইহোক যখন /কোনও স্ক্রোল পুনরুদ্ধার হবে না ঘটবে।
পুরো কোডবেসটি এখানে পাওয়া যাবে: https://github.com/rizedr/react-router-scrol-top
componentDidMountনতুন রুটের উপাদানটিতে যুক্তি রাখতে পারবেন না ?