REDUX
এছাড়াও আপনি ব্যবহার করতে পারেন react-router-redux
যা হয়েছে goBack()
এবং push()
।
এটির জন্য এখানে একটি নমুনা প্যাকটি রয়েছে:
আপনার অ্যাপ্লিকেশনটির প্রবেশের বিন্দুতে আপনার প্রয়োজন হবে ConnectedRouter
এবং হুক আপ করার জন্য কখনও কখনও জটিল সংযোগটি হ'ল history
অবজেক্ট। রেডাক্স মিডলওয়্যার ইতিহাসের পরিবর্তনগুলি শোনে:
import React from 'react'
import { render } from 'react-dom'
import { ApolloProvider } from 'react-apollo'
import { Provider } from 'react-redux'
import { ConnectedRouter } from 'react-router-redux'
import client from './components/apolloClient'
import store, { history } from './store'
import Routes from './Routes'
import './index.css'
render(
<ApolloProvider client={client}>
<Provider store={store}>
<ConnectedRouter history={history}>
<Routes />
</ConnectedRouter>
</Provider>
</ApolloProvider>,
document.getElementById('root'),
)
আমি আপনাকে হুক আপ করার একটি উপায় দেখাব history
। ইতিহাস কীভাবে দোকানে আমদানি করা হয় এবং সিঙ্গেলটন হিসাবে রফতানি হয় তা লক্ষ্য করুন যাতে এটি অ্যাপের প্রবেশের বিন্দুতে ব্যবহার করা যায়:
import { createStore, applyMiddleware, compose } from 'redux'
import { routerMiddleware } from 'react-router-redux'
import thunk from 'redux-thunk'
import createHistory from 'history/createBrowserHistory'
import rootReducer from './reducers'
export const history = createHistory()
const initialState = {}
const enhancers = []
const middleware = [thunk, routerMiddleware(history)]
if (process.env.NODE_ENV === 'development') {
const { devToolsExtension } = window
if (typeof devToolsExtension === 'function') {
enhancers.push(devToolsExtension())
}
}
const composedEnhancers = compose(applyMiddleware(...middleware), ...enhancers)
const store = createStore(rootReducer, initialState, composedEnhancers)
export default store
উপরের উদাহরণস্বরূপ ব্লকটি দেখায় react-router-redux
যে সেটআপ প্রক্রিয়া সম্পন্নকারী মিডলওয়্যার সহায়কগুলি কীভাবে লোড করা যায় ।
আমি মনে করি এই পরবর্তী অংশটি সম্পূর্ণ অতিরিক্ত, তবে ভবিষ্যতে কেউ যদি সুবিধা পান তবে আমি এটিকে অন্তর্ভুক্ত করব:
import { combineReducers } from 'redux'
import { routerReducer as routing } from 'react-router-redux'
export default combineReducers({
routing, form,
})
আমি routerReducer
সব সময় ব্যবহার করি কারণ এটি আমাকে পুনরায় লোড করার উপাদানগুলিকে জোর করে অনুমতি দেয় যা সাধারণত হয় না shouldComponentUpdate
। সুস্পষ্ট উদাহরণটি হ'ল যখন আপনার কাছে একটি ন্যাভ বার থাকে যখন কোনও ব্যবহারকারী কোনও NavLink
বোতাম টিপলে আপডেট হওয়ার কথা । আপনি যদি সেই রাস্তায় নামেন তবে আপনি শিখবেন যে Redux এর সংযোগ পদ্ধতিটি ব্যবহার করে shouldComponentUpdate
। এর সাথে routerReducer
, আপনি mapStateToProps
নাভি বারে রাউটিং পরিবর্তনগুলি মানচিত্র করতে ব্যবহার করতে পারেন এবং ইতিহাসের অবজেক্ট পরিবর্তিত হলে এটি আপডেট করতে এটি ট্রিগার করবে।
এটার মত:
const mapStateToProps = ({ routing }) => ({ routing })
export default connect(mapStateToProps)(Nav)
আমি মানুষের জন্য কিছু অতিরিক্ত কীওয়ার্ড যুক্ত করার সময় আমাকে ক্ষমা করুন: আপনার উপাদানটি যদি সঠিকভাবে আপডেট না shouldComponentUpdate
হয় তবে সংযোগ ফাংশনটি সরিয়ে তদন্ত করুন এবং দেখুন এটি সমস্যার সমাধান করে কিনা। যদি তা হয় তবে টানুন এবং routerReducer
ইউআরএল পরিবর্তন হলে উপাদানটি সঠিকভাবে আপডেট হবে।
সমাপ্তিতে, সমস্ত কিছু করার পরে, আপনি কল করতে পারেন goBack()
বা push()
যে কোনও সময় আপনি চান!
কিছু এলোমেলো উপাদানতে এখন এটি ব্যবহার করে দেখুন:
- আমদানি করুন
connect()
- আপনার এমনকি প্রয়োজন নেই
mapStateToProps
বাmapDispatchToProps
- GoBack এ আমদানি করুন এবং থেকে চাপুন
react-router-redux
- কল
this.props.dispatch(goBack())
- কল
this.props.dispatch(push('/sandwich'))
- ইতিবাচক আবেগ অভিজ্ঞতা
আপনার যদি আরও নমুনার প্রয়োজন হয় তবে দেখুন: https://www.npmjs.com/package/react-router-redux