javascript - 刷新时未定义 Location 属性 (ReactJS)

标签 javascript reactjs fetch

我正在通过我的链接上的“to”属性从react-router-dom发送一个带有几个参数的对象。最初,当点击链接时,数据很好, Prop 也有其值(value)。一旦我刷新它们就未定义。

这是链接...

let newTo = {
     pathname: `/poke/${name}`,
    param1: name
}
const { name } = this.props;
<Link style={viewBtn} to={newTo}>View</Link>

如果重要的话,这是路线...

<Route path="/poke/:pokemon" component={PokeSummary} />

这是我接收 Prop 的其他组件上的代码...

    constructor(props) {
    super(props)
    this.state = {
        paramName: props.location.param1,
        pokemon: {
            id: 0,
            name: '',
        },
        isLoading: false
    }
}

componentDidMount() {
    this.fetchData(this.state.paramName)
}

fetchData = (nameP) => {
    fetch(`https://pokeapi.co/api/v2/pokemon/${nameP}`)
        .then(res => res.json())
        .then(data => this.setState({
            pokemon: {
                id: data.id,
                name: data.name,
            }
        }, () => {console.log(this.state.pokemon)}))
}

谢谢!

最佳答案

您可以只使用 props.match.params.pokemon 而不是像这样传递参数,因为如果用户没有通过您的链接重定向并直接导航到网址,这些内部状态将不可用

关于javascript - 刷新时未定义 Location 属性 (ReactJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268513/

相关文章:

javascript - Angular - 创建 JSON 对象来存储与每个路由关联的数据

javascript - React.js 应用程序是否会根据请求完全传送到浏览器?

javascript - 获取 promise - 返回 500 内部服务器错误

javascript - 使用带有 onclick 的目标 ="_blank"时新窗口未打开

javascript - 删除数组中特定对象内的 JavaScript 属性

javascript - 在react js中访问json文件

javascript - 如何在给定代码的 JavaScript 对象中有条件地添加键

reactjs - 如何使用 aws cognito 联合身份处理重定向

javascript - 出现错误 415 - 获取 api 中不支持的媒体类型

javascript fetch 无法捕获 404 错误