[英]How to pass props stated in HTML to root component
我在現有 HTML/JavaScript (不是 React 項目)項目中為兩個按鈕使用 React 中的一個簡單組件。 它看起來像這樣:
//Submitcancel.jsx
'use strict'
class Submitcancel extends React.Component {
constructor(props) {
super(props)
console.log(props)
}
render() {
return (
<div className="form-buttons">
<div className="ibm-col-12-12">
<button id="buttonSubmit" name="buttonSubmit" value="Submit" type="submit" className="ibm-btn-pri dw-btn-blue">Submit</button>
<button value="Cancel" id="buttonCancel" name="buttonCancel" className="ibm-btn-sec dw-btn-blue">Cancel</button>
</div>
</div>
)
}
}
ReactDOM.render(
// React.createElement(Submitcancel),
// document.querySelector('#react-submit-cancel')
)
HTML 文件如下所示:
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<!-- Load React component. -->
<script type="text/babel" src="./js/components/Submitcancel.jsx"></script>
我想定義props
的組件元素是這樣的:
<div id="react-submit-cancel"></div>
如果您想從 HTML <div>
獲取按鈕文本,則需要一個非反應解決方案:
<div id="react-submit-cancel" submitText="Go"></div>
然后在您的初始化中:
const el = document.querySelector('#react-submit-cancel');
const props = {
submitText: el.getAttribute("submitText") || "Submit", // default value
cancelText: el.getAttribute("cancelText") || "Cancel"
};
ReactDOM.render(React.createElement(Submitcancel, props), el)
對於純 React 解決方案,您必須包裝 Submitcancel 組件,以便您可以使用 JSX 將 props 傳遞給它。
當你需要通過 props 傳遞數據時,你只需要在組件中提到 props id 和 value。
在您的情況下,代碼將類似於:
ReactDOM.render(
<Submitcancel FirstName={"first name"} LastName={"last name"}/>,
document.getElementById("react-submit-cancel")
)
上面的例子FirstName和LastName是兩個道具
您可以在Submitcancel組件內的構造函數中獲取該值。
constructor(props) {
super(props)
console.log(props.FirstName)
console.log(props.LastName)
}
請遵循以下代碼:
ReactDOM.render(
<Submitcancel />,
document.getElementById("react-submit-cancel")
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.