javascript - React.js - 完成了呈现所有项目的 API 提取,现在我希望能够使用 JSON 信息将每个项目路由到他们的“自己的”页面
问题描述
我创建了一个 React 站点,该站点在页面上的 API Fetch 中呈现所有项目。我现在想要的是能够按下呈现的每个项目并能够路由到显示有关该项目的“更多”信息的新组件。
下面我有以下代码,其中包含可用于搜索所有项目或特定项目的“输入”。
const AgentSearch = (e) => {
e.preventDefault();
function capitalizeName(input) {
return input.replace(/\b(\w)/g, (s) => s.toUpperCase());
}
console.log('you hit search', input);
dispatch({
type: actionTypes.SET_SEARCH_TERM,
term: capitalizeName(input),
});
//do something with input
history.push('/findagent');
};
return (
<form className='search'>
<div class='search__input'>
<SearchIcon className='search__inputIcon' />
<input value={input} onChange={(e) => setInput(e.target.value)} />
</div>
这是呈现所有项目的代码:
eachName = data.map((item) => {
return (
<tr>
<td class='text-left'>{item.name}</td>
<td class='text-left'>{item.agency}</td>
</tr>
);
});
基本上我想做的是“捕获” {item.name} 并将其放入新查询中,一旦您在创建的列表中按下该项目。
我尝试创建一个覆盖整个类的按钮,然后将 {item.name} 作为输入,但这不起作用,还尝试创建一个“假”输入窗口,其中存储了每个项目的 {item-name}在列表中,即使 {item-name} 进入输入窗口,一旦我按下它所连接的按钮,它就会说它没有任何价值。
有谁知道这有什么干净的想法?我是 React 的新手,所以这可能真的很容易,哈哈。
谢谢!
解决方案
最简单的方法是onCLick
在td
. 请参阅下面的代码。
const eachName = data.map((item) => {
return (
<tr>
<td class='text-left' onClick={() => handleNameClick(item.name)}>{item.name}</td>
<td class='text-left'>{item.agency}</td>
</tr>
);
});
您可以定义handleNameClick
函数。你会得到item.name
作为参数。见下文。
const handleNameClick = itemName => {
//your code to send request for the clicked name
}
推荐阅读
- elasticsearch - 是否可以在弹性搜索查询中从另一个索引中过滤一个索引的记录?
- regex - 是否可以将 Google 表格中的 IMPORTDATA 导入带有换行符的特定单元格而不是新列?
- javascript - 重置 html 表单上的成功或失败消息
- c++ - cpp unordered_set 只使用比较器而不是哈希
- android - MotionLayout 中的 ViewStub 保持不可见
- visual-studio-code - 汉字如何触发 VsCode 补全?
- excel - 插入新行时复制条件格式
- node.js - node.js + request => 显示垃圾响应的响应
- python - 我的脚本上的处理器使用荒谬。如何优化它?
- xml - 用于返回指向包含 xml 文件中某些字符串的文本节点的绝对静态 xpath 的工具