REDUX
आप भी उपयोग कर सकते हैं react-router-redux
जो है goBack()
और push()
।
यहाँ उस के लिए एक नमूना पैक है:
आपके ऐप के एंट्री पॉइंट में, आपको ज़रूरत है ConnectedRouter
, और हुक करने के लिए कभी-कभी मुश्किल कनेक्शन history
वस्तु है। Redux मिडलवेयर इतिहास के बदलावों को सुनता है:
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
URL में बदलाव होने पर घटक और पुल ठीक से अपडेट हो जाएगा।
समापन में, वह सब करने के बाद, आप कॉल कर सकते हैं 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