在React中,当你切换菜单并导航到另一个路由时,通常会重新渲染整个页面。这意味着之前路由上的参数将会丢失。

要在切换菜单后保留参数,可以使用React Router提供的URL参数。

首先,在你的路由配置中,将需要传递的参数添加到路由路径中。例如:

<Route path='/search/:keyword' component={SearchComponent} />

然后,在切换菜单时,使用React Router提供的Link组件来导航到带参数的路由。例如:

import { Link } from 'react-router-dom';

...

<Link to={`/search/${keyword}`}>Search</Link>

这样,当你切换菜单并导航到搜索页面时,参数将会被传递到SearchComponent组件中。你可以在SearchComponent中使用props.match.params.keyword来获取参数的值。

如果你需要在搜索页面切换菜单后保留参数,需要在菜单组件中保存当前的参数并传递给下一个路由。你可以使用React的状态(state)或者Redux来实现这个功能。

使用状态(state)的示例:

class MenuComponent extends React.Component {
  state = {
    keyword: ''
  };

  handleKeywordChange = (event) => {
    this.setState({ keyword: event.target.value });
  };

  render() {
    const { keyword } = this.state;

    return (
      <div>
        <input type='text' value={keyword} onChange={this.handleKeywordChange} />
        <Link to={`/search/${keyword}`}>Search</Link>
      </div>
    );
  }
}

使用Redux的示例:

import { connect } from 'react-redux';
import { setKeyword } from './actions';

class MenuComponent extends React.Component {
  handleKeywordChange = (event) => {
    this.props.setKeyword(event.target.value);
  };

  render() {
    const { keyword } = this.props;

    return (
      <div>
        <input type='text' value={keyword} onChange={this.handleKeywordChange} />
        <Link to={`/search/${keyword}`}>Search</Link>
      </div>
    );
  }
}

const mapStateToProps = (state) => ({
  keyword: state.keyword
});

const mapDispatchToProps = {
  setKeyword
};

export default connect(mapStateToProps, mapDispatchToProps)(MenuComponent);

无论你使用哪种方法,都需要确保在菜单组件中保存当前的参数,并在切换菜单时传递给下一个路由。这样,当你切换菜单后,参数将会被保留并传递给搜索页面。

React路由切换后参数丢失解决方案 - 保留搜索参数

原文地址: https://www.cveoy.top/t/topic/qkvu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录