通过单击作为现有组件一部分的按钮重定向到另一个组件

时间:2019-05-14 10:34:24

标签: javascript reactjs react-router jsx

我是新来的反应者。我试图通过单击作为现有渲染组件一部分的按钮来重定向到组件。 现在,我希望当我单击按钮时,应该呈现新组件,并且应该隐藏现有组件(也为按钮)。

render(){
    return(

            <div className='container'>
            <table className='table table-striped'>
                <thead>
                    <tr>
                        <th>User_Id</th>
                        <th>User_Name</th>
                        <th>Email</th>
                    </tr>
                </thead>
                <tbody>
                    {this.state.arr.map((card)=>{
                        return(
                            <tr>
                                <td>{card.user_id}</td>
                                <td>{card.user_name}</td>
                                <td>{card.email}</td>
                                <td>
                                    <button className="btn btn-outline-primary ml-2 my-2 my-sm-0">Edit</button>
   //click here(the Edit button) to Redirect to another component
                                </td>
                                <td><button className="btn btn-outline-primary ml-2 my-2 my-sm-0">Delete</button></td>
                            </tr>       
                    ) })}
                </tbody>
             </table>
        </div>
    )

}

并且要渲染的组件是-

export default class Edit extends Component{
    render(){
      return(
        <div>
          <h1>Edit User.</h1>
        </div>
       )
    }
 }

2 个答案:

答案 0 :(得分:0)

import { Route } from 'react-router-dom'

const Button = () => (
  <Route render={({ history}) => (
    <button
      type='button'
      onClick={() => { history.push('/new-location') }}
    >
      Click Me!
    </button>
  )} />
)

答案 1 :(得分:0)

react-router-dom有一个Link组件,可以自行处理。您所要做的就是在to道具下提供URL重定向到该URL。只需将您的button元素替换为Link组件:

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

<Link to="/url-to-edit" className="btn btn-outline-primary ml-2 my-2 my-sm-0">Edit</Link>

More about the Link component