gpt4 book ai didi

javascript - 在 React 中,如何从链接或其他组件添加 URL "string"作为对象的属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:47 27 4
gpt4 key购买 nike

在 React 中,我将一个对象的 URL 属性(特别是 amcharts chart bullet.url)(一个字符串)设置为“../members/{member.name}”,它可以毫无问题地呈现。单击链接可正确导航到该页面。但是,似乎所有以前加载的状态都需要重新加载。它是一个新的 React“ session ”吗?

我已经尝试使用 Link 使用各种表达式设置属性。但似乎没有一个能按预期编译。我发现的大多数文章都与链接或持久状态的基本用法有关。

以下工作呈现和导航,但所有状态都消失在新页面上:

let series = chart.series.push(new am4charts.LineSeries());
let bullet = series.bullets.push(new am4charts.CircleBullet());
bullet.url = "../Members/{member.name}";

我认为我缺少 React 概念或设置链接 URL 的简单方法。我想在不“重置”所有以前加载的状态的情况下导航。

最佳答案

不使用 url,而是使用点击(“hit”)事件来保持在 React 生态系统中。如果您允许通过 React Router 呈现图表组件并使用 withRouter 将其导出,您可以在组件本身上利用 this.props.history。至于如何处理成员的名字,假设bullet实际上是其他子弹的模板,我个人认为成员的名字应该是图表数据的一部分。例如

主要成分:

import React, { Component } from "react";
import ReactDOM from "react-dom";
import { Route, BrowserRouter as Router } from "react-router-dom";

// ...

// main component's render
<Router>
<React.Fragment>
<Route
path="/"
render={props => <App {...props} />}
/>
<Route
path="/Member/:name"
render={props => <Person {...props} extra="via router" />}
/>
</React.Fragment>
</Router>

包含您的图表的组件(例如 App):

import React from "react";
import { withRouter } from "react-router-dom";
import * as am4core from "@amcharts/amcharts4/core";
import * as am4charts from "@amcharts/amcharts4/charts";
import am4themes_animated from "@amcharts/amcharts4/themes/animated";

// App's componentDidMount() ...

// ...chart code...

// Member names found in bullet data
chart.data = [ { name: "...", /* ... */ }, /* ... */ ];

// Since we're not using `url`, manually change the cursor to a pointer on hover
bullet.cursorOverStyle = am4core.MouseCursorStyle.pointer;

// Bullet click event
bullet.events.on("hit", event => {
this.props.history.push('../Members/' + event.target.dataItem.dataContext.name);
});

// ... end App

export default withRouter(App);

这是我们的 Column charts with images at top demo 的 fork 在 React 中,当单击项目符号/图像时,既会更新主要组件的状态,也会转到新的 URL,并且都会加载此人的信息:

https://codesandbox.io/s/olpzok2rxz

如果 member.name 不是图表数据的一部分而且也不可能是,那么在 JSFiddle 或 CodeSandbox 上提供您的应用程序示例会有所帮助,以便我们进一步提供帮助。

关于javascript - 在 React 中,如何从链接或其他组件添加 URL "string"作为对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com