このようにして、ビュー間の画像情報を保持したいと考えています。 「表示」とは、別のHTMLページを意味しますか?私は物事の多くの標準的な方法は以下のようになり推測する:
- ストア状態のファイルコンテンツ/パス(例えばReduxの状態)
- 使用クライアント側のルータ(例えば反応-ルータ)に変更しますビューあなたは、クライアント側のルーティングを使用したことがない場合は、それが(反応-ルータで)そのように見えます
状態を維持しながら:
import { Router, Route, browserHistory } from 'react-router'
// Iy you use redux to handle the state
import { createStore } from 'redux'
import myReducer from 'my-reducer'
const store = createStore(myReducer)
const history = syncHistoryWithStore(browserHistory, store)
// Your view components
function Top(props) { ... }
function UploadImage(props) { ... }
function EditImage(props) { ... }
// The Router itself
ReactDOM.render(
<Router history={history}>
<Route path="/" component={Top} >
<Route path="upload-image" component={UploadImage} />
<Route path="edit-image" component={EditImage} />
</Route>
</Router>)
あなたが前にReduxの使用したことがない場合は、あなたが使用することができますそれ彼の方法:
まず、減速
import { combineReducers } from 'redux'
const myReducer = combineReducers({ imagePath })
// This is called a reducer function
function imagePath(oldState = "", action) {
switch(action.type) {
case 'SET_PATH':
return action.payload
}
}
を作成
次に、状態値を得るためにあなたのコンポーネントを接続する(例えば、 UploadImage)
const ReduxUploadImage = connect(function(state) {
return {
imagePath: state.imagePath
}
})(UploadImage)
は、今あなたがprops.imagePath
を通じてimagePath
にアクセスすることができ、代わりにUploadImage
のReduxUploadImage
使用している場合。また、connect
関数は、dispatch
関数をあなたの小道具に追加します。
最後に、あなたはあなたのコンポーネント内で呼び出すことによって、パスを設定(ただし、機能自体をレンダリングする:これはanti-patternだろう)することができます。最後
props.dispatch({ type: 'SET_PATH', payload: "the_path" })
、ページまたは間Reduxの状態を持続することは容易ですdedicated middlewareを使用してリフレッシュしてください。
パスを保持する代わりに、画像をdata-uriとして読み込みます。また、イメージをリフレッシュ間で永続化したい場合は、イメージをlocalstorageに保存することもできます。 – hazardous
https://www.npmjs.com/package/blob-utilのようなライブラリを使って、保存用の画像からデータへの変換を処理してください。 – hazardous