---
# System prepended metadata

title: Javascript XML
tags: [Javascript, React]

---

# Javascript XML
###### tags: `React` `Javascript`
**建立Dom**
		
		constant value = 'valueText';
		
		constant domObject = 
		(
		<div>
			<h1>{value.toLowerCase()}</h1>
		</div>
		)

規則
1. 一個Dom內只能有一個根元素，如果不想要寫最外層則可用<React.Fragment></React.Fragment>或<></>
2. 標籤需要有明確的開始結尾
3. 內容為jsx標籤雖然跟html很像但不是，因此內部屬性會有差異
4. 標籤中混入js表達式要使用 {}
5. 指定class時要用className="xxxx"屬性
6. 指定樣式時要使用style={{width:"100px",border:"1px solid green"}}  外部{} 為表達式，內部{}為物件
7. 標籤規則 若寫小開頭則找html標籤 ，若大寫開頭則找react component

若使用js建立虛擬Dom則需將每個節點個別建立，過程相當繁瑣
		
	constant domObject = React.CreateElement('h1',{id:'testH1'},'inner value');

最後將Dom渲染到畫面上

	ReactDom.render(domObject , document.getElementById(...));//渲染到畫面上 ps.非append

在jsx中要顯示陣列資料時需要注意，在{}只能放入js表達式
1. 變數
2. 變數+變數
3. function()
4. arr.map()

而不能放入
for、if、switch

注意使用需要給一個屬性key而這個key為visual Dom唯一標示符號因此必須給值 (沒提到為什麼只有arr.map要寫) 

	arr.map((val,index)=>{
		return '<li key={index}>'+{val}+'</li>'
	})

而不建議直接用index。原因後面再說