html - HTML 颜色选择器可以记住选定的颜色吗?
问题描述
我正在使用颜色选择器来使用户能够选择背景颜色。我已经实现了它并且工作正常,但问题是当用户第二次单击颜色选择器时,颜色选择器会重置。本质上,它不会“记住”他们之前选择的内容。
我的代码是:
<label className='optionSelectors'>BACKGROUND COLOR: </label><br/>
<input type='color' value='#FFFFFF' onChange={this.handleBgColorChange}/>
所以当用户第一次点击颜色选择器时,它默认为白色。假设用户选择了紫色,但经过反思,他们想要更亮或更暗的阴影,所以他们再次打开颜色选择器 - 它变回白色。
我也尝试删除该value='#FFFFFF
属性,但它仍然默认为白色?
编辑:我正在使用 React,函数 handleBgColorChange() 如下:
handleBgColorChange(e) {
document.getElementById('Collage').style.backgroundColor = e.target.value
}
相关输入仅位于普通 HTML 中,它不是复杂渲染或任何花哨的东西的一部分。代码字面意思是:
<div>
<label className='optionSelectors'>BACKGROUND COLOR: </label><br/>
<input type='color' value='#FFFFFF' onChange={this.handleBgColorChange}/>
</div>
解决方案
请看一下https://reactjs.org/docs/glossary.html#control-vs-uncontrolled-components
并且在大多数情况下使用受控。例如:
import React, { useState, useCallback } from 'react';
function App() {
const [color, setColor] = useState('#FFFFFF');
const handleBgColorChange = useCallback(({ target: { value } }) => {
setColor(value);
}, []);
return (
<div>
<label>BACKGROUND COLOR:</label>
<input type='color' value={color} onChange={handleBgColorChange} />
<hr />
<div class="collage" style={{ backgroundColor: color }}></div>
</div>
);
}
推荐阅读
- react-native - 如何在 React-Navigation/Drawer 6 中实现“goBack”
- wordpress - 试图让 WordPress 忽略文件 URL 中的第一个点
- python - 为什么我在 python 中的凯撒密码减少了 1 个字符?
- python-3.x - Azure python sdk 服务总线接收消息
- r - 用R中的连续有序值替换数组中的有序值
- javascript - 如何使用 php 和 jquery 打印工作表
- elasticsearch - 使用 es2csv 将数据从 Elasticsearch 导出到 CSV 文件
- angular - myCodeMirror.getValue() 为空 Typescript CodeMirror
- c++ - 使用非参数模板参数调用 lambda
- amazon-web-services - 为私有 AMI 的 EC2 实施标签策略