Jon*_*uhl 8 javascript accessibility reactjs
我一直在做一个反应小游戏,游戏的一部分允许玩家在开始之前设置一些设置。这是一款回合制标签游戏,四名玩家在地图上追逐不同的标记,同时避开标记为“它”的一名玩家。
我有以下选择选项的渲染方法:
render() {
return (
<div>
<form onSubmit={this.createPlayers} ref="form">
<label htmlFor="goodies">Choose a Goody!</label>
<select name="goodies" id="goodies">
<option value="donut"></option>
<option value="cookie"></option>
<option value="hotdog"></option>
<option value="bacon"></option>
<option value="hamburger"></option>
<option value="brocolli"></option>
</select>
<button type="submit">Play!</button>
</form>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
我收到一个很大的警告,说我需要将它们包装在 span 元素中,添加一些 aria 标签并给它们一个错误的角色。
Line 18: Emojis should be wrapped in <span>, have role="img", and have an accessible description with aria-label or aria-labelledby jsx-a11y/accessible-emoji
我这样做了,然后 JSX 拒绝编译,因为它期望每个选项都有一个字符串。它不会让我在选项标签之间放置一个跨度。
我真的很想让这个警告消失,但是当我尝试做它要求的事情时,JSX 将无法编译。我必须做些什么才能在没有警告的情况下完成这项工作?
事实是,我在其他地方使用了表情符号,但没有收到任何警告或任何问题。
Ale*_*oya 20
<span role="img" aria-label="xxxxx">像这样添加选择
<select name="goodies" id="goodies">
<option value="donut">
<span role="img" aria-label="donut"></span>
</option>
....
</select>
Run Code Online (Sandbox Code Playgroud)
更新:您可能想为表情符号创建一个组件,例如<option>在表情符号组件中添加标签
const Emoji = props => (
<option
className="emoji"
role="img"
aria-label={props.label ? props.label : ""}
aria-hidden={props.label ? "false" : "true"}
value={props.label}
>
{props.symbol}
</option>
)
class MyComponent extends React.Component {
render() {
return (
<div>
<form onSubmit={this.createPlayers} ref="form">
<label htmlFor="goodies">Choose a Goody!</label>
<select onChange={(e)=>{console.log(e.target.value)}} name="goodies" id="goodies">
<Emoji label="donut" symbol="" />
<Emoji label="cookie" symbol="" />
<Emoji label="hotdog" symbol="" />
<Emoji label="bacon" symbol="" />
<Emoji label="hamburger" symbol="" />
<Emoji label="brocolli" symbol="" />
</select>
<button type="submit">Play!</button>
</form>
</div>
)
}
}
ReactDOM.render(<MyComponent />, document.querySelector("#app"))Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="app"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5714 次 |
| 最近记录: |