簡體   English   中英

用 React.createElement() 替換 document.createElement()

[英]Replacing document.createElement() with React.createElement()

我有一個 javascript 庫,它使用document.createElement()創建一個HTMLElement我想創建一個具有相同功能的反應庫。 我的想法是用React.createElement()替換document.createElement() React.createElement()

所以,原始代碼類似於

    this.myElement = document.createElement("input");
   /* some stuff happens here due only after which the followig code is run */
    this.myElement.className = "someClassName";
    this.myElement.style.display = "block";
    this.myElement.appendChild(someElement);

會變成

this.myElement = React.createElement("input");
this.myElement.props.className = "someClassName";
this.myElement.props.style.display = "block"; // Props is read only at this point
this.myElement.appendChild(someReactElement); // This doesn't work either

這里的問題是 props 是 react 中的只讀屬性, appendChild 也不能那樣工作。 所以在React.createElement("input")之后更改它是不可能的。 我可以在基於原始代碼的每次 createElement 調用之前創建 props 對象,但它顯着降低了現有代碼庫的可重用性。 有沒有辦法可以用來繞過反應中的這個問題?

編輯:我知道我可以在調用 React.createElement 期間傳遞子項和道具,但是,它降低了我復制粘貼和重用現有代碼庫的能力。 這個問題是關於在 React.createElement 調用之后更改道具和附加孩子的

創建一個 props 對象並將其作為 createElement 函數的第二個參數傳遞。 按照這個——

const props = {
    className: 'someClassName',
    style: {
        display: 'block',
        width: '100%'
    }
}

React.createElement('input', props);

閱讀React.createElement的文檔。 您可以在函數中傳遞道具(和孩子)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM