※li
li 有個 index 屬性,不寫在 console 會有警告const array = ["aaa", "bbb", "ccc"];
const arr = [];
array.forEach((data, i) => arr.push(<li key={i}>{data}</li>));
ReactDOM.render(arr ,document.querySelector("#div1"));
※此種方式還要再宣告一個陣列,如不想宣告,還可以用如下的方式
※
const array = ["aaa", "bbb", "ccc"];
ReactDOM.render(
<ul>
{
array.map((data, i) => {
return <li key={i}>{data}</li>
})
}
</ul>,
document.querySelector("#div1")
);
※
※state
setState 為關鍵的方法,不能改在 this.state 裡宣告,不一定要叫 state
組件內部使用
class Btn extends React.Component {
constructor(p) {
super(p)
console.log(this);
this.state = {bln:true}
this.changeText = this.changeText.bind(this)
}
changeText() {
this.setState({bln:!this.state.bln})
}
render() {
return <button onClick={this.changeText}>{this.state.bln?'XXX':'OOO'}</button>
}
}
ReactDOM.render(<Btn />, document.querySelector("#d1"))
※可看到 this 印出來,有 state、props、refs…等,這些關鍵字是不能改的
※要改變狀態一定要用 setState 方法,不能使用 this.setState.id = !this.state.id,雖然不會報錯,但沒有作用
※render 是覆寫 React.Componet 裡的方法;而 changeText 是自定義的方法,所以自定義的還得在 constructor 加上 bind 才可以使用,也可以寫在 onClick 裡,如 onClick={this.changeText.bind(this)}
※props
ReactDOM.render 的第一個參數傳進來的,可以用 props 取得class Animal extends React.Component {
constructor(p) {
super(p)
}
render() {
console.log(this)
return (
<ul>
<li>{this.props.name}</li>
<li>{this.props.price}</li>
</ul>
)
}
}
Animal.defaultProps = { // 給預設值
name: '動物名',
price:500
}
Animal.propTypes = { // 給型態,如果不是必要,最後就不需要 isRequired
name:PropTypes.string.isRequired,
price:PropTypes.number.isRequired
}
const animal1 = {
name:'老虎',
price:200
}
const animal2 = {
name:'老鼠',
price:50
}
ReactDOM.render(<Animal {...animal1} />, document.querySelector("#d1"))
ReactDOM.render(<Animal name={animal2.name} />, document.querySelector("#d2"))
※想使用 propTypes,必需得有 prop-types.js
※refs
類似以前的 id在 ref = 宣告
class Reference extends React.Component {
constructor(p) {
super(p)
this.handleBlure = this.handleBlure.bind(this)
this.handleClick = this.handleClick.bind(this)
}
handleClick() {
console.log(this.msgVue.value)
}
handleBlure(e) {
alert(e.target.value)
}
render() {
return (
<div>
<input ref={i => this.msgVue=i} />
<button onClick={this.handleClick}>按我</button>
<input placeholder="預設值" onBlur={this.handleBlur} />
</div>
)
}
}
ReactDOM.render(<Reference />, document.querySelector("#d1"))
※也可以使 ref="xxx",取值就用 this.refs.xxx.value 即可
沒有留言:
張貼留言