Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在更新组件时添加类_Javascript_Reactjs - Fatal编程技术网

Javascript 在更新组件时添加类

Javascript 在更新组件时添加类,javascript,reactjs,Javascript,Reactjs,我只想在更新组件时,而不是在安装组件时,将类添加到输入中。因此,每次开始编写输入时,我都要添加类:demo const-App=()=>{ 功能改变(e){ 设置状态(如目标值); } useffect(()=>{ document.getElementById('test').classList.add(“演示”) }, []); const[state,setState]=useState(0); 返回( \sd {state} ); } 导出默认应用程序; 如何使用我的代码实现这一点?我

我只想在更新组件时,而不是在安装组件时,将类添加到输入中。因此,每次开始编写输入时,我都要添加类:
demo

const-App=()=>{
功能改变(e){
设置状态(如目标值);
}
useffect(()=>{
document.getElementById('test').classList.add(“演示”)
}, []);
const[state,setState]=useState(0);
返回(
\sd
{state}

); } 导出默认应用程序;

如何使用我的代码实现这一点?

我建议将您的需求更直接地映射到代码,而不是试图破解
useffect
的行为。此外,我会避免进行DOM操作,而不仅仅是使用React进行操作,因为无法保证在渲染过程中保留相同的DOM元素:

const App = () => {
  const [state, setState] = useState({ hasEdited: false, value: '' });
  return (
    <div className="main">
      <input 
        id='test' 
        type="text"
        className={state.hasEdited ? 'demo' : ''}
        onChange={e => setState({ ...state, hasEdited: true, value: e.target.value })}
      />
      <p>{state.value}</p>
    </div>
  );
}
const-App=()=>{
const[state,setState]=useState({hasdedited:false,值:“”});
返回(
setState({…state,hasdedited:true,value:e.target.value})
/>
{state.value}

); }