Tôi đang sử dụng React-Router 1.0.0-rc3 cùng với Redux-Router 1.0.0-beta3.Thêm URL cơ sở vào ứng dụng bằng Redux-Router + React-Router
Khi sử dụng React-Router, bạn có thể sử dụng useBasename
với createHistory
để đặt URL cơ sở cho ứng dụng để bạn có thể dễ dàng viết ứng dụng chạy bên trong thư mục phụ. Example:
Thay vì điều này:
import { createHistory } from 'history';
let base = "/app_name/"
<Router history={browserHistory}>
<Route path={base} component={App}></Route>
</Router>
<Link path={base + "some_path"}>some_path</Link>
Bạn có thể viết theo cách này sử dụng useBasename
:
import { createHistory, useBasename } from 'history';
const browserHistory = useBasename(createHistory)({
basename: "/app_name"
});
<Router history={browserHistory}>
<Route path="/" component={App}></Route>
</Router>
<Link path="/some_path">some_path</Link>
Tuy nhiên, trong Redux-Router, bạn cần phải vượt qua createHistory
thay vì history
đến một reducer:
const store = compose(
applyMiddleware(m1, m2, m3),
reduxReactRouter({
routes,
createHistory
}),
devTools()
)(createStore)(reducer);
Làm thế nào có thể w e sử dụng useBasename
trong trường hợp này?
Tôi không chắc chắn những gì ví dụ thứ hai (" Bạn có thể viết theo cách này bằng cách sử dụng useBasename ") có nghĩa là. Dường như sử dụng mô-đun "lịch sử" (không phải là một phần của React). Ngoài ra, nếu bạn đã sử dụng đối tượng "browserHistory" được nhập từ bộ phản ứng, bạn không thể ghi đè lên nó bằng định nghĩa "const browserHistory". Và nếu tôi thay thế bằng "newBrowserHistory" thay vào đó, tôi nhận được lỗi "TypeError: _history.useBasename không phải là một hàm". Vì vậy, tôi thành thật không thể làm cho người đứng đầu hoặc đuôi của ví dụ. – Peter