Javascript React Router DOM | URL被重定向到根路径
我已经用DOM设置了一个批准者。第4版。我有一个带有链接的表,我从服务器获取每个表的数据。当我单击表中的链接时,我想查看每个项目的详细信息屏幕。那不行 下面是Approver,它是应用程序的路由器。所有其他路线运行良好,仅供参考:Javascript React Router DOM | URL被重定向到根路径,javascript,reactjs,redux,react-router-v4,redux-observable,Javascript,Reactjs,Redux,React Router V4,Redux Observable,我已经用DOM设置了一个批准者。第4版。我有一个带有链接的表,我从服务器获取每个表的数据。当我单击表中的链接时,我想查看每个项目的详细信息屏幕。那不行 下面是Approver,它是应用程序的路由器。所有其他路线运行良好,仅供参考: import React from 'react'; import PropsTypes from 'prop-types'; import { withProps } from 'recompose'; import ReactRouterPropTypes fro
import React from 'react';
import PropsTypes from 'prop-types';
import { withProps } from 'recompose';
import ReactRouterPropTypes from 'react-router-prop-types';
import { Route, Switch, Redirect, withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import { Authorization } from 'util/viewPermissionUtil';
import { Permission } from 'util/permissionsUtil';
import permissions from 'constants/roles';
import GroupDetailsScreen from 'GroupDetailsScreen';
import GroupsScreen from 'GroupScreen';
import UsersScreen from 'containers/UserScreen';
const GetUser = Authorization(({ user }) =>
Permission(user, [permissions.somepermission])
);
const AuthUsers = GetUser(
({ ...props }) => <UsersScreen {...props} />,
() => <Redirect to="/" />
);
const GetGroupsDetails = Authorization(({ user }) =>
Permission(user, [permissions.someOtherPermissions])
);
const AuthGroupDetails = GetGroupsDetails(
({ ...props }) => <GroupDetailsScreen {...props} />,
() => <Redirect to="/" />
);
const UsersRoute = ({ user }) => withProps({ user })(AuthUsers);
const GroupDetailsRoute = ({ user }) => withProps({ user })(AuthGroupDetails)
const Router = ({ match: { path }, user }) => (
<Switch>
<Route path={`${path}/groups`} component={GroupsScreen} />
<Route path={`${path}/groups/details/:name`} component={GroupDetailsRoute({ user })} />
<Route path={`${path}/users`} component={UsersRoute({ user })} />
<Redirect to={`${path}/users`} />
</Switch>
);
Router.propTypes = {
match: ReactRouterPropTypes.match.isRequired,
user: PropsTypes.object
};
function mapStateToProps(state) {
return {
user: state.auth.user
};
}
const ConnectedRouter = connect(mapStateToProps)(Router);
const AppRouter = withRouter(({ ...props }) => <ConnectedRouter {...props} />);
export default AppRouter;
我是说这里有什么问题。我真的一点也不明白。我尝试了几个不同的场景
我尝试在AppRouter中手动插入一个BrowserRouter,不过,该路由器在应用程序链中设置得更高,无法工作
我尝试将端点数据作为常量文件手动插入。没有进行API调用,就无法工作
我得到了URL
,只改变了一秒钟,但在刷新时,它确实返回到/
。我真的被难住了。我用相同的方法在两个不同的实例中实现了相同的体系结构。工作得很好。完全一样
我的应用程序基于React/Redux/Redux Observable
构建,用于异步操作。另一方面。我还将getGroup
服务传递到我的GroupDetailsScreen
以获取数据或错误消息,但问题在于路由器。我在URL
上获得了groupName
,但由于某种原因被重定向。发生了什么事
我刚刚发现的一个小更新。看起来,react路由器dom的URL正在删除一个参数。我的意思是这
在TableOverview屏幕上,URL是localhost:3000/something/groups
但当我点击链接时,它会转到localhost:3000/groups/details/name
。
**
我在Github上读到关于这个问题的文章:,还没有找到一个可靠的解决方案。但是我可以在这里添加一些东西
:
pathname: `something/groups/details/${row.name}`
这是一个非常奇怪的解决方案,我不愿意继续。开发是好的,但我需要找到一个解决方案。欢迎任何意见。
有人能告诉我我在这里做了什么蠢事,却不管用吗。谢谢 如果你看到小的拼写错误,请不要回答。我更改了文件和组件的名称,因为它们太暴露了。应用程序没有输入错误…请尝试在此处添加
exact
:
是的,我试过了。什么都没有发生。尽管如此,URL还是会更改,但会被重定向…为了反复说明我对此的失望程度,我还有一个deleteRendere,对于每个表行,它具有相同的API端点,调用row.name,并且该行会被删除。
import { endpointInstance } from 'services/httpFactory';
import httpMethod from 'constants/httpMethod';
import endpoint from './endpoint';
export const getGroup = name => {
const options = {
method: httpMethod.GET,
url: endpoint.GET_GROUP(name)
};
return endpointInstance(options);
};
pathname: `something/groups/details/${row.name}`