当前位置: 首页 > 知识库问答 >
问题:

如何在没有JSX的元素中添加自定义属性(只是使用createElement方法)?

漆雕令秋
2023-03-14

我想使用React在元素中添加一个自定义属性(例如名为“key”的属性),但我只能添加一些关键字,如“className”、“style”等。。。

我现在的代码是这样的:

function TodoItem(props){
    return React.createElement("div",{key:props.id,className:"todo-item"},
        React.createElement("input",{type:"checkbox"},null),
        React.createElement("p",null,props.text)
    );
}

我不能添加"key:props.id"。

我的目标是创造这样的东西:

<div class="todo-item" key="<int>" data-reactid=".0.0"><input type="checkbox" data-reactid=".0.0.0"><p data-reactid=".0.0.$test">Take out trash</p></div>

现在我不知道如何放置key=“int”部分

共有3个答案

封俊艾
2023-03-14

HTML5的设计考虑到了数据的可扩展性,这些数据应该与特定元素关联,但不需要有任何定义的含义。data-*属性允许我们存储关于标准、语义HTML元素的额外信息,而无需其他黑客攻击,如非标准属性。。。

据开发商介绍。mozilla。org如果要指定自定义属性,请在本例中使用data-[customName]类似data key

使用以下格式:'属性':'key'

var elm = React.createElement(
    /* element          */ 'h1'
    /* custom attribute */ ,{'data-key': 'todo-item'}
    /* innerHTML        */ ,'Hello'
)

ReactDOM.render(
   elm,
   document.getElementById('root')
)

HTML DOM结果:

<div id="root">
   <h1 data-key="todo-item">Hello</h1>
</div>

如果要添加类属性,请使用逗号{'data-key':'todo item',className:'myClass'}

杜祺
2023-03-14

以下示例使用道具,因此不会显示警告。

function TodoItem({ arr }) {
  return arr.map(item =>
    React.createElement(
      "div",
      {
        key: item.id, // <--- Put the key prop here.
        className: "todo-item"
      },
      React.createElement("input", { type: "checkbox" }, null),
      React.createElement("p", null, item.text)
    )
  );
}

const data = [
  { id: 1, text: "Box 1" },
  { id: 2, text: "Box 2" }
];

const rootElement = document.getElementById("root");
ReactDOM.render(React.createElement(TodoItem, { arr: data }), rootElement);
<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="root"></div>
秦禄
2023-03-14

只是好奇,为什么你不想用jsx?

如果你想看翻译,可以访问babeljs。木卫一

例如:

function Comp() {
    return <div myprop="prop" />
}

结果致:

function Comp() {
 return React.createElement("div", {
    myprop: "prop"
  });
}

而且,因为我还不能发表评论。key字保留如上所述。所以使用键,这样反应可以渲染更聪明,如果你想传递自己的东西,还有一些其他的名字。

编辑:

因此,要使组件与阵列保持原样,请这样做。

function NoJSX(props) {
  return React.createElement(
    "div",
    {
      key: "ishouldbeunique", // a unique value, specially for React
      myKey: "icanbeeverything" // whatever you want
    },
    props.children
  );
}

将导致:

<div myKey="icanbeeverything">test me</div>
 类似资料:
  • 问题内容: 背后有不同的原因,但是我想知道如何简单地向JSX中的元素添加自定义属性? 问题答案: 编辑:更新以反映React 16 React 16本机支持自定义属性。这意味着向元素添加自定义属性现在就像将其添加至函数一样简单,如下所示: 先前的答案(第15和更早版本) 当前不支持自定义属性。有关更多信息,请参见此未解决的问题: 解决方法是,您可以在中执行以下操作:

  • 一个具有“姓名”、“地址”和“工资”属性的实体“人” 两个角色-“员工”和“经理” 虽然员工应该能够编辑他自己的地址,但他肯定不能改变他的工资或其他人的地址。虽然他可能被允许看到自己的工资和其他用户的地址,但他甚至不允许看到其他人的工资,更不用说编辑了。另一方面,manager具有完全的readwrite权限。 这在后端不是问题--我们可以在那里使用自定义bean验证来强制执行写权限。 我想收到

  • 我正在尝试使用Javascript选择此复选框 下面的代码可以工作,但并不理想 我试过这些 但它们并不起作用。有什么想法能让这件事成功吗? 数据值未硬编码的更新代码

  • 我正在为Wordpress中的Elementor编辑器开发一个自定义小部件。 我想设置自定义小部件图标,Elementor提供了get_ICON函数,我们必须返回类,该类包含:before伪元素,并在浏览器中呈现。 是否有任何方法可以使用png或任何其他格式将图标更新到Elementor小部件。 甚至我也试着用内容为空和背景图像的类。它不起作用了。 在Elementor中创建自定义小部件的文档:h

  • 本文向大家介绍vue如何获取自定义元素属性参数值的方法,包括了vue如何获取自定义元素属性参数值的方法的使用技巧和注意事项,需要的朋友参考一下 偶尔还是会陷入到DOM操作上面去,其实你应该关心的是数据传递,而不是操作DOM。如果你是想获取data-num的数据,可以这样写: 这样就可以取到这个值了,如果你是确实想操作DOM,那你可以这样写: 2.通过e.target.getAttribute 3.