javascript - 切换单击选择标签 - 反应
问题描述
我正在开发一个反应应用程序,当用户单击单个文本时,它将显示一个带有项目的选择标签。
我在这里出现了两个问题:
- 当我单击文本时,选择标记将出现在所有列表项上,而不是单击的项上。
例如我有列表:
--------------------------------
name item
--------------------------------
George text
Mikael text
当我单击 george 的文本时,george 和 mikael 都会显示选择标签。这不是我想做的。它只能显示在被点击的列表项上。
- 从选择标签中选择一个项目后,它必须保持该状态,它将成为“文本”的默认值。
例如:
--------------------------------
name item
--------------------------------
George text
Mikael text
如果我单击乔治文本,然后将出现乔治的选择标签。如果我选择值:item 1
它必须保留它并使其成为文本的默认值,因此输出将是这样的,然后选择标记将再次消失,然后如果单击它将再次出现,反之亦然:
--------------------------------
name item
--------------------------------
George item 1
Mikael text
所以这有点像切换到常规文本并选择标签项。
到目前为止,我创建了一个有状态组件和一个无状态组件或一个有状态组件。当状态改变时,不要直接设置状态为真,它与当前状态 isItClick 相反:!this.state.isItClick
import React, {Component} from 'react';
import ItemList from './ItemList';
class App extends Component {
constructor(props) {
super(props);
this.state = {
isItClick: false
}
this.clickfn = this.clickfn .bind(this);
}
clickfn = (value) => {
this.setState(() => ({
isItClick : !this.state.isItClick
}));
}
render() {
return (
<div>
{this.state.isItClick
? <ItemList clickfn ={this.clickfn }/>
: <div className="myspace" onClick={this.clickfn }>TEXT</div>
}
</div>
)
}
}
export default App;
然后对于我的 itemlist 组件:
import React, {Component} from 'react';
const ItemList = (props) => {
return (
<div className="my-space">
<select onChange={(e) => props._handleClick(e.target.value)}>
<option value="1">Item 1</option>
<option value="2">Item 2</option>
<option value="3">Item 3</option>
</select>
</div>
);
}
export default ItemList;
知道我在这里想念什么吗?我需要解决什么问题才能使其根据我的目标发挥作用?请在这里帮助新手!
PS。将不胜感激演示代码。
解决方案
您还必须在状态变量中设置单击的项目 ID,并且在列表的渲染方法中,您必须检查此 ID 并仅为单击的项目返回 ItemList。如果您已发布代码以显示列表,我将共享已编辑的代码。
您必须保留一组状态来跟踪列表中的每个项目。在选择的 onChange 中,您必须设置状态值,并且 App 组件的渲染应该具有以下语句
<div className="myspace" onClick={this.clickfn }>{this.state.variableToTrackSelect}</div>
我已经发布了发布在https://codesandbox.io/s/7y8k77nrm1中的代码。
推荐阅读
- c# - 我的 mySQL Delete 命令无法正常工作
- .net - 如何使用 MimeKit 从电子邮件中排除签名和引用部分?
- twilio - 在 twilio 函数中获取回调函数错误
- php - LARAVEL Eloquent: BelongsTo 关系 - 批量更新
- amazon-web-services - 不使用 .htaccess 的新 Elastic Beanstalk 实例
- r - 如何计算两个日期之间的持续时间
- javascript - 如何使用自定义 Axios 实例取消令牌?
- excel - Excel 中不同工作表的超链接下拉列表
- r - 如何在同一张图中制作多个变量的箱线图?
- javascript - 这两个函数有什么区别(箭头函数与函数声明)