gpt4 book ai didi

javascript - 如何为特定行添加自定义点击处理程序

转载 作者:行者123 更新时间:2023-11-29 20:58:27 25 4
gpt4 key购买 nike

要设置上下文,我是 REACT 的新手。我正在开发一个示例应用程序,我需要在其中以表格格式显示贸易数据。如果选择该行,则应显示最右侧的删除按钮。否则它应该被隐藏。

我只是尝试先显示和隐藏文本,而不是使用显示按钮进行切换。我能够做到这一点。唯一发生的事情是所有行的文本都会切换。

我尝试了很多事情来让它工作。下面的代码正在进行中,我不确定下一步该做什么,

import React from 'react';

class TradeTableView extends React.Component {

constructor(){
super()
this.state = {
data: []
}

this.handleClickEvent = this.handleClickEvent.bind(this);

}

handleClickEvent(event) {
const name = event.target.name;
console.log('Name in handleClickEvent is ' + name);
}

componentDidMount() {
console.log('inside component did mount..');
fetch('http://localhost:3004/row')
.then(response => {
return response.json();})
.then(responseData => {console.log(responseData); return responseData;})
.then((data) => {
// jsonItems = JSON.parse(items);
this.setState({data: data});
});
}

render() {
return(
<div className="Table">
<div className="Heading">
<div className="Cell">
<p>Trade Date</p>
</div>
<div className="Cell">
<p>Commodity</p>
</div>
<div className="Cell">
<p>Side</p>
</div>
<div className="Cell">
<p>Quanity</p>
</div>
<div className="Cell">
<p>Price</p>
</div>
<div className="Cell">
<p>Counterparty</p>
</div>
<div className="Cell">
<p>Location</p>
</div>
<div className="Cell">
<p></p>
</div>
</div>

{this.state.data.map((item, key) => {
let prop1 = 'shouldHide'+key;
console.log('The prop is ' + prop1);

return (
<div ref={prop1} key={key} className="Row" onClick={this.handleClickEvent}>
<div className="Cell">
<p>{item.a}</p>
</div>
<div className="Cell">
<p>{item.b}</p>
</div>
<div className="Cell">
<p>{item.c}</p>
</div>
<div className="Cell">
<p>{item.d}</p>
</div>
<div className="Cell">
<p>{item.e}</p>
</div>
<div className="Cell">
<p>{item.f}</p>
</div>
<div className="Cell">
<p>{item.f}</p>
</div>
<div className="Cell">
<p onClick={this.handleClickEvent}>{this.state.prop1 ? 'Sample Text':'Some Text'}</p>
</div>
</div>
)
})}
</div>
);
}
}

export default TradeTableView;

这是我的组件。如果您能让我知道如何仅为特定行切换文本,我很可能会使用知道如何切换按钮(我的原始用例)然后在单击按钮时删除该行。非常感谢您的帮助。

P.S 我能够切换文本。您可能在我上面的代码中找不到关于 thi.state.prop1 的逻辑,因为我试图修改代码以使其适用于单行。最后我进入了一种状态,它不适用于所有行,显然不适用于单行。总而言之,我的问题是识别唯一行并仅为该行显示一个部分。

最佳答案

我已将 currentSelectedRow 属性添加到 state 以跟踪所选行。下面是配置最少的代码。

import React from 'react';
import { render } from 'react-dom';
import Hello from './Hello';

class TradeTableView extends React.Component {

constructor() {
super()
this.state = {
data: [{id:1,val:11},{id:2,val:22},{id:3,val:33}],
currentSelectedRow : -1

}
}

handleClickEvent = (event, key) =>{
this.setState({ currentSelectedRow: key})
}


render() {
return (
<div className="Table">


{this.state.data.map((item, key) => {
return (
<div key={key} className="Row" onClick={(e) => this.handleClickEvent(e, key)}>
<div className="Cell">
<p>{item.id}</p>
</div>
<div className="Cell">
<p>{item.val}</p>
</div>
<div className="Cell">
<p onClick={(e) => this.handleClickEvent(e, key)}>{this.state.currentSelectedRow === key ? 'Row Selected' : 'Row Not Selected'}</p>
</div>
</div>
)
})}
</div>
);
}
}

render(<TradeTableView />, document.getElementById('root'));

Here is the working example

关于javascript - 如何为特定行添加自定义点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968736/

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