I am trying to make a color box where users can input color as a string but will display output as a background color in react I tried this way but it did not work as expected I am just learning to react. thanks in advance Here is my code.
import "./styles.css";
import randomColor from "randomcolor";
import { useState } from "react";
let color = randomColor();
// const name = "rocky";
export default function App() {
const [statecolor, setcolor] = useState({
bg:"",
dis:false
});
function displayColor(e) {
const inputcolor = e.target.value;
if (inputcolor === color) {
setcolor( prevValues => {
return { ...prevValues,bg:color,dis:true}
} )
}else{
console.log("not found")
}
}
return (
<div className="App">
<h1>show color with input matching</h1>
{statecolor.map((statecolors)=>{
return (
<h2 style={{backgroundColor:statecolors}}>{statecolors}</h2>
)
})}
<input type="text" value={statecolor} onChange={displayColor} />
</div>
); }
Advertisement
Answer
I’m not sure this is what you want to achieve, but here’s what I wrote https://codesandbox.io/s/laughing-thunder-jlc28?file=/src/App.js
- randomColor is unused actually because you doesn’t want to display initially right?
- I’m not sure why checking this
inputcolor === color, it will always go toelse(unless you know what the randomColor will be) so I skipped that part