【发布时间】:2018-05-29 05:08:05
【问题描述】:
我有一个 QWERTY 键盘,它通过 bootstrap-react 组件作为 Bootstrap 按钮动态呈现。他们没有 ID 我试图在 React 中不使用 ID 作为拐杖。
当单击其中一个字母时,它会通过道具触发 onClick 事件,返回到我的 App.js。这工作正常。我希望该按钮随后被禁用。因为它没有 ID,我不能做一个 jQuery 类和数据值选择器,因为:React。
如何将该按钮属性更改为禁用(禁用是反应中允许的 HTML 属性)。
import React from "react";
import {Button} from 'react-bootstrap';
const keyboard = props => {
return (
<div>
{props.keyboard.keys.map((item,index) => (
<Button bsStyle={props.keyboard.style} bsSize="large" onClick={props.click} key={index} value={item.toUpperCase()}> {item.toUpperCase()}
</Button>
))}
</div>
)
}
export default keyboard;
到目前为止,我的点击事件按预期工作。理想情况下,我希望 Button 更改为:
<Button bsStyle={props.keyboard.style} bsSize="large" onClick={props.click} key={index} value={item.toUpperCase()} disabled> {item.toUpperCase()}</Button>
在点击事件之后。
键盘引用自我的App.js如下:
<Panel header="Keyboard:">
<Keyboard keyboard={this.keyboard.row1} click={(event) => this.keyboardClickHandler(event)}
/>
<Keyboard keyboard={this.keyboard.row2} click={(event) => this.keyboardClickHandler(event)}/>
<Keyboard keyboard={this.keyboard.row3} click={(event) => this.keyboardClickHandler(event)}/>
<div id="messages">{this.messages}</div>
</Panel>
点击处理程序控制台按预期记录值:
keyboardClickHandler = (event) => {
console.log(event.target.value)
}
*** 编辑:
我有点破解它,因为我无法通过超级组件将事件数据传回。我恢复到一个简单的组件,并添加了一个包含布尔值状态的键数组,并在组件内部进行检查以查看它是否应该被禁用。
status: {
q: false,
w: false,
e: false,
r: false,
t: false,
y: false,
u: false,
i: false,
o: false,
p: false
还有组件:
import React from "react";
import {Button} from 'react-bootstrap';
const keyboard = props => {
return (
<div>
{props.keyboard.keys.map((item,index) => {
let status = props.keyboard.status[item]
return (
<Button bsStyle={props.keyboard.style} bsSize="large" onClick={props.click} key={index} disabled={status} value={item}> {item.toUpperCase()}
</Button>
)
}
)
}
</div>
)
}
export default keyboard;
【问题讨论】:
标签: javascript html reactjs jsx react-bootstrap