React/ TYpescript 打开新页面并传递数据
React/ TYpescript open new page and pass Data
我是 Typescript 的新手,老实说,我仍然很难使用非常基本的功能。我的情况是这样的:我有一个包含对象的数组(每个对象有 8 个属性)。在我的页面上,我遍历这个数组并显示每个对象的一些数据。对于每个显示的对象,都有一个按钮/ Link,通过它我 link 到下一页 (zuBewrtenderTest.tsx)。我想将一个属性 (UniqueID) 从所选对象传递到下一页,以便我可以再次从数组访问正确的对象。无论如何,我不知道如何传递数据/访问它。为此使用 redux store 对我来说似乎有点矫枉过正,因为我真的只需要传递这个 int。
我试过这个解决方案: --> 但我无法让它工作,因为 this 和 props 在打字稿中不再被允许
这是我的代码
function tests() {
//Test Navigation
<Route path="/zuBewertenderTest/:name" exact component={ZuBewertenderTest}></Route>
//Test um
const classes = UseStyles();
return (
<div className={classes.root}>
<Grid className="container" container spacing={3}>
<Grid item xs={12}>
<Paper className={classes.paper}></Paper>
</Grid>
{testDaten.map((item, key) => {
return (
<Grid item xs={4} sm={4} key={item.UniqueId}>
<Input value={item.UniqueId} type="number" id="idTest"/>
<Paper className={classes.paper}> Besucher-Id: {item.UniqueId} </Paper>
<Paper className={classes.paper}> Name: {item.Vorname} {item.Nachname}</Paper>
<Paper className={classes.paper}> Nachweisart: {item.Nachweisart} </Paper>
<Paper className={classes.paper}> <Link to={`/zuBewertenderTest/${item.UniqueId}`}>More info</Link> </Paper>
</Grid>
)
})}
</Grid>
</div>
);
}
如果您希望从 url 传递任何数据,可以使用 url 查询来完成。
如果您需要通过这种方式传递多个值
传递单个值:
<Link to={`/URL/${item.UniqueId}?uniqueIdentifier={$uniqueValue}`}>More info</Link>
只需每次使用“&”即可传递多个值。
Bonus! You can also send an object in query string by using
const obj={val1:"value1",val2:"value2"}
const queryString = queryString.stringify(obj);
<Link to={`/URL/${item.UniqueId}?${queryString}`}>More info</Link>
在目标页面上,您可以通过使用 react-router useLocation
钩子和查询字符串包轻松地从 url 获取查询参数来解析您的查询:
import queryString from 'query-string'
import { useLocation } from 'react-router-dom'
const { search } = useLocation()
const values = queryString.parse(search)
console.log(values.filter)
console.log(values.origin)
我是 Typescript 的新手,老实说,我仍然很难使用非常基本的功能。我的情况是这样的:我有一个包含对象的数组(每个对象有 8 个属性)。在我的页面上,我遍历这个数组并显示每个对象的一些数据。对于每个显示的对象,都有一个按钮/ Link,通过它我 link 到下一页 (zuBewrtenderTest.tsx)。我想将一个属性 (UniqueID) 从所选对象传递到下一页,以便我可以再次从数组访问正确的对象。无论如何,我不知道如何传递数据/访问它。为此使用 redux store 对我来说似乎有点矫枉过正,因为我真的只需要传递这个 int。
我试过这个解决方案:
这是我的代码
function tests() {
//Test Navigation
<Route path="/zuBewertenderTest/:name" exact component={ZuBewertenderTest}></Route>
//Test um
const classes = UseStyles();
return (
<div className={classes.root}>
<Grid className="container" container spacing={3}>
<Grid item xs={12}>
<Paper className={classes.paper}></Paper>
</Grid>
{testDaten.map((item, key) => {
return (
<Grid item xs={4} sm={4} key={item.UniqueId}>
<Input value={item.UniqueId} type="number" id="idTest"/>
<Paper className={classes.paper}> Besucher-Id: {item.UniqueId} </Paper>
<Paper className={classes.paper}> Name: {item.Vorname} {item.Nachname}</Paper>
<Paper className={classes.paper}> Nachweisart: {item.Nachweisart} </Paper>
<Paper className={classes.paper}> <Link to={`/zuBewertenderTest/${item.UniqueId}`}>More info</Link> </Paper>
</Grid>
)
})}
</Grid>
</div>
);
}
如果您希望从 url 传递任何数据,可以使用 url 查询来完成。
如果您需要通过这种方式传递多个值 传递单个值:
<Link to={`/URL/${item.UniqueId}?uniqueIdentifier={$uniqueValue}`}>More info</Link>
只需每次使用“&”即可传递多个值。
Bonus! You can also send an object in query string by using
const obj={val1:"value1",val2:"value2"}
const queryString = queryString.stringify(obj);
<Link to={`/URL/${item.UniqueId}?${queryString}`}>More info</Link>
在目标页面上,您可以通过使用 react-router useLocation
钩子和查询字符串包轻松地从 url 获取查询参数来解析您的查询:
import queryString from 'query-string'
import { useLocation } from 'react-router-dom'
const { search } = useLocation()
const values = queryString.parse(search)
console.log(values.filter)
console.log(values.origin)