Dapp
區塊鏈
Learn More →
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script>
//設計組件類別
class MyHead extends React.Component{
render(){
return React.createElement("H1",null,"Hello Component");// H1--->組件類別名稱 null-->屬性物件 Hello Component--->子元件
}
}
window.addEventListener("load",()=>{//載入網頁內容 事件處理器addEventListener
//1.建立自訂的React 組件"實體"
let mycomponent=React.createElement(MyHead,null);//---->建立MyHead的組件"實體"(mycomponent)
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
mycomponent,body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script>
//設計組件類別
class MyHead extends React.Component{
render(){
console.log(this.props.level)//this.props.level==3
return React.createElement("H1"+this.props.level,null,"Hello Component");//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let mycomponent=React.createElement(MyHead,{level:3});//---->建立MyHead的組件"實體"(mycomponent) ,level:3--->屬性=3
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
mycomponent,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script>
//設計組件類別
class MyHead extends React.Component{
render(){//props--->屬性
console.log(this.props.level)//this.props.level==3
return React.createElement("H"+this.props.level,null,"Hello Component");//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}
}
class MyHeadList extends React.Component{
render(){
let heads=[];
let head;
for(let i=1;i<6;i++){
head=React.createElement(MyHead,{level:i});
heads.push(head);
}
return React.createElement("DIV",null,heads);//heads--->子元件
}
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let mycomponent=React.createElement(MyHeadList,null);//---->建立MyHead的組件"實體"(mycomponent) ,level:3--->屬性=3
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
mycomponent,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script>
//設計組件類別
class MyHead extends React.Component{
render(){
console.log(this.props.level)//this.props.level==3
return React.createElement("H"+this.props.level,null,"Hello Component");//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}
}
class MyHeadList extends React.Component{
constructor(props){
super(props)
this.state={maxlevel:3};
window.setTimeout(()=>{
this.setState({maxlevel:6})
//2 secs 後,執行這裡的程式碼
},2000);
}
render(){
let heads=[];
let head;
for(let i=1;i<this.state.maxlevel;i++){
head=React.createElement(MyHead,{level:i});
heads.push(head);
}
return React.createElement("DIV",null,heads);//heads--->子元件
}
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let mycomponent=React.createElement(MyHeadList,null);//---->建立MyHead的組件"實體"(mycomponent) ,level:3--->屬性=3
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
mycomponent,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script>
//設計組件類別
class MyHead extends React.Component{
render(){
console.log(this.props.level)//this.props.level==3
return React.createElement("H"+this.props.level,null,"Hello Component");//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}
}
class MyHeadList extends React.Component{
constructor(props){
super(props)
this.state={maxlevel:3};
window.setTimeout(()=>{//新狀態跟舊狀態有關聯
this.setState((currentState,currentProps)=>({maxlevel:currentState.maxlevel+1}));
//2 secs 後,執行這裡的程式碼
},2000);
}
render(){
let heads=[];
let head;
for(let i=1;i<this.state.maxlevel;i++){
head=React.createElement(MyHead,{level:i});
heads.push(head);
}
return React.createElement("DIV",null,heads);//heads--->子元件
}
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let mycomponent=React.createElement(MyHeadList,null);//---->建立MyHead的組件"實體"(mycomponent) ,level:3--->屬性=3
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
mycomponent,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<!--載入Babel編譯器套件-->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<!--包含JSX語法的Javascript必須使用type="text/babel"-->
<script type="text/babel">
//設計組件類別
class MyHead extends React.Component{
render(){
return <h1>Hello World</h1>;//React.createElement("h1",null,"Hello World");//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
//若有屬性(props)則屬性寫在標籤裡面 ex:<h1 屬性>
}//上面例子沒有屬性(是null)--->標籤裡面不用寫
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let elem=<MyHead/>//let elem=React.createElement(MyHead);//---->建立MyHead的組件"實體"(elem)
//2.將建立好的React組件實體elem畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
elem,document.body
);
});
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<!--載入Babel編譯器套件-->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<!--包含JSX語法的Javascript必須使用type="text/babel"-->
<script type="text/babel">
//設計組件類別
class MyHead extends React.Component{
render(){
return <div classname="head">Hello Shawn{this.props.level}</div>//return React.createElement("div",{classname:"head"},"Hello Shawn"+this.props.level);//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}//classname設定標籤屬性,和js相同(html才是class)
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let myComponent=<MyHead level="3"/>//let mycomponent=createElement(MyHead,{level:3});//---->建立MyHead的組件"實體"(mycomponent) ,level:3--->屬性=3
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
myComponent,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<!--載入Babel編譯器套件-->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<style type="text/css">
.head{font-size:24px;font-weight:bold;}
</style>
<!--包含JSX語法的Javascript必須使用type="text/babel"-->
<script type="text/babel">
//設計組件類別
class MyHead extends React.Component{
render(){//className是行外樣式
return <div className="head" style={{color:this.props.color}}>Hello Shawn{this.props.level}</div>
//return React.createElement("div",{classname:"head",style:{color:this.props.color}},"Hello Shawn"+this.props.level);//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}//classname設定標籤屬性,和js相同(html是class)//style--->行內樣式
}
class MyHeadList extends React.Component{
render(){
return <div>
<MyHead level="1" color="red"/>
<MyHead level="2" color="lightblue"/>
<MyHead level="3" color="purple"/>
</div>;
}
}
window.addEventListener("load",()=>{
//1.建立自訂的React element
let elem=<MyHeadList/>//React.createElement(MyHeadList);
//2.將建立好的React element 畫到容器中 (這裡的容器使用HTML Body Element)
ReactDOM.render(
elem,document.body
);
})
</script>
</head>
<body>
</body>
</html>
function getData(callback)
//2.準備做AJAX連線
{
let req=new XMLHttpRequest();//XMLHttpRequest--->
req.open("get","https://training.pada-x.com/resources/javascript-es6-react/data.out");
req.onload=()=>
{
//5.等待一段時間後,[子程式]完成連線,觸發[主程式]的load事件,取得資料
//6.呼叫callback,即透過參數傳入的showData函式
callback(this.responseText);//this.responseText--->伺服器回傳的資料(我們等待的資料)
};
req.send();//3.送出連線,建立[子程式]進行非同步處理
//4.[主程式立刻結束函式,回傳undefined]
}
function showData(result)
{
alert(result);//7.可以從result取得連線的資料
};
getData(showData);//1.呼叫取資料用的函式,並將showData函式透過參數傳入
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>//callback function可以處理非同步程序(同理promise也可以)
function getData(cb){//callback function
let req=new XMLHttpRequest();//this 指向 物件req
req.open("get","https://training.pada-x.com/resources/javascript-es6-react/data.out");
req.onload=()=>
{
cb(this.responseText);
};
req.send();
}
getData(function(result)//回傳cb(this.responseText)
{
alert(result);
});
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Promise處理非同步程式</title>
<script>
function getData(){
return new Promise(function(resolve,reject){//promise結果2種-->連線成功or連線失敗
let req=new XMLHttpRequest();//this 指向 物件req
req.open("get","https:/ing.pada-x.com/resources/javascript-es6-react/data.out");
req.onload=()=>
{ //如何將連線load()事件後得到資料 this.responseText 串接到主流程式上
resolve(this.responseText);//if連線成功---->回傳responseText
};
req.onerror=()=>
{
reject("Error");//if連線失敗--->印出Error
};
req.send();
});
}
//這是主流程
//getData回傳值給promise物件
getData().then(function(result){//(1) 第1個參數(result)--->promise成功時接續動作 (2)第2個參數(error)---->promise失敗時接續動作
alert(result);
},function(error){
alert(error);
}
);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Promise處理非同步程式</title>
<script>
function getData(){
return new Promise(function(resolve,reject){//promise結果2種-->連線成功or連線失敗
let req=new XMLHttpRequest();//this 指向 物件req
req.open("get","https:/ing.pada-x.com/resources/javascript-es6-react/data.out");
req.onload=()=>
{
resolve(this.responseText);//if連線成功---->回傳responseText
};
req.onerror=()=>
{
reject("Error");//if連線失敗--->印出Error
};
req.send();
});
}
let promise=getData();//getData傳值給promise物件
promise.then(function(result){//(1) 第1個參數(result)--->promise成功時接續動作then (2)第2個參數(error)---->promise失敗時接續動作then
alert(result);
},function(error){
alert(error);
}
);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Promise處理非同步程式</title>
<script>
function getData(){
return new Promise(function(resolve,reject){//promise結果2種-->連線成功or連線失敗
let req=new XMLHttpRequest();//this 指向 物件req
req.open("get","https:/ing.pada-x.com/resources/javascript-es6-react/data.out");
req.onload=()=>
{
resolve(this.responseText);//if連線成功---->回傳responseText
};
req.onerror=()=>
{
reject("Error");//if連線失敗--->印出Error
};
req.send();
});
}
let promise=getData();//getData傳值給promise物件
promise.then(function(result){//只有一個參數 呼叫完then緊接著呼叫catch作錯誤處理
alert(result);
}).catch(function(err){
alert(err);//另一種錯誤處理方式--->catch用法
});
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script>
//設計組件類別
class MyHead extends React.Component{
render(){
console.log(this.props.level)//this.props.level==3
return React.createElement("H"+this.props.level,null,"Hello Component");//this.props.level--->幾號標題 ex:level:3--->this.props.level:3--->h3字形
}
}
class MyHeadList extends React.Component{
constructor(props){
super(props)
this.state={maxlevel:props.start};//props.start=2,maxlevel=2
}
componentWillMount(){//component 將要繪製前的時刻
this.intervalId=window.setInterval(()=>{
this.setState((currentState,currentProps)=>{
if(currentState.maxlevel>currentProps.end){//不要更新
return currentState;
}
else{//maxlevel+1
return{maxlevel:currentState.maxlevel+1}
}
});
},1000);//每1秒鐘執行這裡的邏輯
}
componentWillUNMount()//組件將刪除前時刻
{
Window.clearInterval(this.intervalId);
}
render(){
let heads=[];
let head;
for(let i=1;i<this.state.maxlevel;i++){
head=React.createElement(MyHead,{level:i});
heads.push(head);
}
return React.createElement("DIV",null,heads);//heads--->子元件
}
}
window.addEventListener("load",()=>{
//1.建立自訂的React 組件"實體"
let mycomponent=React.createElement(MyHeadList,{start:2,end:5});//---->建立MyHead的組件"實體"(mycomponent) , props-->有兩個屬性start,end 2個 props.start props.end
//2.將建立好的React組件實體mycomponent畫到容器中(這裡的容器使用HTML Body Element)
ReactDOM.render(
mycomponent,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Component</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<!--載入Babel編譯器套件-->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<style type="text/css">
.head-3{font-size:24px;font-weight:1.2em;}
</style>
<!--包含JSX語法的Javascript必須使用type="text/babel"-->
<script type="text/babel">
//設計MyHead組件類別
class MyHead extends React.Component{
constructor(props){
super(props);
this.state={color:"red"};
}
render(){
return <div className={"head-"+this.props.level}
style={{color:this.state.color}}
onClick={this.clickHandler.bind(this)} //this 要 (綁定 bind) 才可以 ~
onMouseOver={this.mouseOverHandler.bind(this)}
onMouseOut={this.mouseOutHandler.bind(this)}>Hello Shawn</div>
}
mouseOutHandler(e){
this.setState({color:"red"});
}
mouseOverHandler(e){
this.setState({color:"blue"});
}
clickHandler(e){
alert("clicked");
this.setState({color:"blue"});//不能用this.state.color=blue !!!
//當使用者點擊,將顏色換掉
}
}
window.addEventListener("load",()=>{
ReactDOM.render(
<MyHead level="3"/>,document.body
);
})
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Object</title>
<script type="text/javascript">
class Myform extends React.Component{
render(){
//在表單中註冊onSubmit事件
return <form onSubmit={this.handleSubmit.bind(this)}>
<input type="text"/>
<input type="submit" value="Submit"/>
</form>
}
handleSubmit(e){
e.preventDefaullt();//可停止瀏覽器預設的表單處理動作
console.log("表單送出")//使用者點擊Submit送出表單後,在此進行處理
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Object</title>
<script type="text/javascript">
class Myform extends React.Component{
constructor(props){
super(props);
this.state={text:""};//初始化state.紀錄單行輸入框的資料
}
render(){
//在單行輸入框中設定value屬性,讓介面反應資料變更
return <form onSubmit={this.handleSubmit.bind(this)}>
<input type="text" value={this.state.text}/>
<input type="submit" value="Submit"/>
</form>;
}
handleSubmit(e){
e.preventDefaullt();//可停止瀏覽器預設的表單處理動作
console.log("表單送出")//使用者點擊Submit送出表單後,在此進行處
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Object</title>
<script type="text/javascript">
class Myform extends React.Component{
constructor(props){
super(props);
this.state={text:""};// 初始化state. 紀錄單行輸入框的資料
}
render(){
//在 單行輸入框中 註冊 onChange 事件
return <form onSubmit={this.handleSubmit.bind(this)}>
<input type="text" value={this.state.text}
onChange={this.handleTextChange.bind(this)}/>
<input type="submit" value="Submit"/>
</form>;
}
handleTextChange(e){//處理資料變更的事件處理器
//e.currentTarget();//--->可以取得觸發事件的 html element
this.setState({text:e.currentTarget.value});//使用者單行輸入框中資料
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Object</title>
<script type="text/javascript">
class Myform extends React.Component{
constructor(props){
super(props);
this.state={textarea:""};// 初始化state. 紀錄單行輸入框的資料
}
render(){
//在 多行輸入框中設定value屬性, 並註冊 onChange 事件
return <form onSubmit={this.handleSubmit.bind(this)}>
<textarea value={this.state.textarea}
onChange={this.handleTextareaChange.bind(this)}/>
<input type="submit" value="Submit"/>
</form>;
}
handleTextareaChange(e){//處理資料變更的事件處理器
//e.currentTarget();//--->可以取得觸發事件的 html element
this.setState({textarea:e.currentTarget.value});//使用者單行輸入框中資料
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Object</title>
<script type="text/javascript">
class Myform extends React.Component{
constructor(props){
super(props);
this.state={selected:"male"};// 初始化state. 紀錄單行輸入框的資料
}
render(){
//在 下拉選單 中設定 value 屬性, 並註冊 onChange 事件
return <form onSubmit={this.handleSubmit.bind(this)}>
<select value={this.state.selected}
onChange={this.handleSelectChange.bind(this)}>
<option value="male">男</option><option value="female">女</option>
</select>
<input type="submit" value="Submit" />
</form>
}
handleSelectChange(e){//處理資料變更的事件處理器
this.setState({selected:e.currentTarget.value});
}
}
[TOC] Connect to the local blockchain by ganache-cli 會使用一組Private key 作為連線metamask Smart contract migrated to the local blockchain--->transactions deployed SmartContract.json--->擁有ABI 前端react介面 串接好metamask + 可以一鍵 automation deploy 智能合約
Jun 18, 2022[TOC] 發布智能合約--->每一個NFT會deploy一份智能合約專屬的contract address---->同一份contract address又有數個特定的transaction hash(Block,nounce...etc) 技術名詞分類 account address--->==0x0B51C6034725e3c0575E48560077C7eF61d92dB9==  url
May 21, 2022.web3provider----->前端與合約互動(需要提供provider)--->不同rpc,chainid useState用法 useState用法---->array destructing用法 array destructing Usestate參考影片
Apr 20, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up