【发布时间】:2018-10-16 18:55:15
【问题描述】:
我正在开发一个反应应用程序,当用户单击单个文本时,它将显示一个带有项目的选择标签。
我有两个问题出现在这里:
- 当我点击文本时,选择标签将出现在ALL列表项上,而不是被点击的项上。
例如我有列表:
--------------------------------
name item
--------------------------------
George text
Mikael text
当我点击george 的文本时,george 和mikael 都会显示select 标签。这不是我想做的。它只能显示在被点击的列表项上。
- 从选择标签中选择一个项目后,它必须保持该状态,它将成为“文本”的默认值。
例如:
--------------------------------
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。将不胜感激演示代码。
【问题讨论】:
-
这是尝试CodeSandbox.io 分享您的代码的最佳时机。
-
OK 将创建一个沙盒
-
@Sean:这是沙箱? codesandbox.io/s/43pr6q9pmx
标签: javascript html reactjs jsx