繁体   English   中英

在反应中的动态 html 标签中添加样式

[英]add styling in a dynamic html tags in react

嗨,我想在动态生成的 html 标签中添加样式,例如h1、img等。我已经通过映射生成了 html 标签,但现在我想在其上添加一些样式,但我无法在已生成的标签上添加样式

const [textFieldStyles, setTextFieldStyles] = useState({
  width: "5rem",
  height: "2rem",
  color: "blue",
  fontSize: "20px",
});
const handleTextField = (e) => {
  setTextFieldStyles({ ...textFieldStyles, [e.target.name]: e.target.value });
};
function handleAdd() {
  const values = [...fields];
  values.push({
    top: 20,
    left: 80,
    tag: (
      <h6
        className="inputField"
        style={{
          width: textFieldStyles.width,
          height: textFieldStyles.height,
          color: textFieldStyles.color,
          fontSize: textFieldStyles.fontSize,
        }}
        contentEditable="true"
      >
        hello
      </h6>
    ),
  });
  setFields(values);
}

return (
<div>
fields.map((key, index)=>{
return {key.tag}
}
<label>width</label>
    <input name="width" onChange={handleTextField} type="text" /><label>height</label>
    <input name="height" onChange={handleTextField} type="text" /><label>color</label>
    <input name="color" onChange={handleTextField} type="text" /><label>font Size</label>
    <input name="fontSize" onChange={handleTextField} type="text" />
</div>
)```

检查这个:

(已编辑)

import React, { useState, useEffect } from "react";

export default function App() {
  const [fields, setFields] = useState([]);
  const [textFieldStyles, setTextFieldStyles] = useState({
    width: "5rem",
    height: "2rem",
    color: "blue",
    fontSize: "20px"
  });

  let values = [...fields];

  const handleTextField = e => {
    setTextFieldStyles({ ...textFieldStyles, [e.target.name]: e.target.value });
  };

  const handleAdd = () => {
    values.push({
      top: 20,
      left: 80,
      tag: (
        <h6 className="inputField" style={textFieldStyles}>
          hello
        </h6>
      )
    });
    setFields(values);
  };

  const submitForm = e => {
    e.preventDefault();
    handleAdd();
    document.getElementById("form").reset();
  };

  useEffect(() => {
    handleAdd();
  }, []);

  return (
    <div>
      {fields.map((key, index) => key.tag)}
      <form id="form" onSubmit={submitForm}>
        <label>width</label>
        <input name="width" onChange={handleTextField} type="text" />
        <label>height</label>
        <input name="height" onChange={handleTextField} type="text" />
        <label>color</label>
        <input name="color" onChange={handleTextField} type="text" />
        <label>font Size</label>
        <input name="fontSize" onChange={handleTextField} type="text" />
        <button type="submit">Click</button>
      </form>
    </div>
  );
}

演示: stackblitz

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM