javascript 如何使“div”标签可以用“react-router-dom”中的“Link”点击?

sauutmhj  于 2023-01-29  发布在  Java
关注(0)|答案(4)|浏览(135)

下面的代码:

import React, { Component } from 'react';
import '../styles/CountryDetails.css';
import { Link } from 'react-router-dom';
import { IconContext } from 'react-icons';
import { GoArrowRight } from 'react-icons/go';
import { FaPlane } from 'react-icons/fa';

class CountryDetails extends Component {
    constructor(props) {
        super(props);
        this.state = {
            countryData: props.countryData
        }
    }

    render() {
        console.log(this.state.countryData);
        return (
            <div>
                <h1 className="display-3 text-center my-5">{this.state.countryData.countryClassification}</h1>
                    <div className="CountryDetail">

                        <div className="cards shadow-1 container">
                            <div className="row vertical-align">
                                <div className="col-2 text-center">
                                    <IconContext.Provider value={{ color: '#A9A9A9', className: 'icon-hover icon-size'}}>
                                        <div>
                                            <FaPlane />
                                        </div>
                                    </IconContext.Provider>
                                </div>
                                <div className="col-8">
                                    <h4>Airfare | Car Rental | Hotel Booking Site</h4>
                                    {this.state.countryData.topAirfareCarRentalHotelBookingSite1 ? null : <span className="category-status">Under Construction...</span>}
                                </div>
                                <div className="col-2 text-center">
                                    <IconContext.Provider value={{ className: 'show-hover icon-arrow-size'}}>
                                        <div>
                                            <GoArrowRight />
                                        </div>
                                    </IconContext.Provider>
                                </div>
                            </div>
                            <Link to={`/country/${this.state.countryData.countryAndTerriority}/topAirfareCarRentalHotelBookingSite1`} />
                        </div>
                    </div>
            </div>
        )
    }
}

export default CountryDetails;

这是我得到的:

现在,我的URL链接显示http://localhost:8080/country/Afghanistan/,当我单击矩形框时,我希望我的URL链接更新为http://localhost:8080/country/Afghanistan/topAirfareCarRentalHotelBookingSite1,它将显示一个不同的组件。
由于某些原因,我不能使这个div可单击,并且当我单击它时URL不会改变。

<Link to={`/country/${this.state.countryData.countryAndTerriority}/topAirfareCarRentalHotelBookingSite1`} />

错了还是放错了地方

ou6hu8tu

ou6hu8tu1#

你试过把div放在链接里面吗?

<Link to = "yourURL" >
   <div></div>
</Link>
o2g1uqev

o2g1uqev2#

代码语法错误。请用Link标记将div标记括起来
<Link to ='...'><div>....</div></Link>

2wnc66cl

2wnc66cl3#

作为其他答案的替代方案,您可以使用功能组件并执行以下操作:

import React, { useCallback } from 'react'
import { useHistory } from 'react-router-dom'

export default ({ countryData }) => {

    const history = useHistory()
    const onClick = useCallback(() => {
        const to = `/country/${countryData?.countryAndTerriority}/topAirfareCarRentalHotelBookingSite1`
        history.push(to)
    },[countryData, history])

    return (
        <div onClick={onClick}>
            {'Your content here'}
        </div>
    )

}
    • 编辑:**

我认为这是您的情况下的最佳方法,您实际上不需要为该组件指定状态,因为您已经有了相应的支持。

lf3rwulv

lf3rwulv4#

我使用了这部分代码:

<Link to = "yourURL" >
<div></div>
</Link>

看起来Link正在禁用div样式。(正如用户Beast在上面的评论中提到的。)在我的例子中,div是空的,只有bg,所以设置div高度:100%解决了问题。

相关问题