Comments (2)
例子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<!-- <script type='text/javascript' src="./lib/shallowCompare.js"></script>-->
<script type='text/javascript' src="./dist/React.js"></script>
<!-- <script type='text/javascript' src="./lib/ReactTestUtils.js"></script>-->
<!--<script type='text/javascript' src="./test/react.js"></script>
<script type='text/javascript' src="./test/react-dom.js"></script>-->
<!--<script type='text/javascript' src="./test/react-lite.js"></script>-->
<script type='text/javascript' src="./lib/babel.js"></script>
</head>
<body>
<div>开发者工具</div>
<pre>
</pre>
<div id='example'></div>
<script type='text/babel'>
var container = document.getElementById("example")
var div = container
// var PropTypes = React.PropTypes
if(!window.ReactDOM){
window.ReactDOM = window.React
var PropTypes = React.PropTypes
}
var expect = function(a) {
return {
toBe: function(b) {
console.log(a, b, a === b)
}
}
}
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
flag: 1
};
}
componentDidMount(props){
console.log("App did mount")
}
componentWillUpdate(props){
console.log("App will update")
}
componentDidUpdate(props){
console.log("App did update")
}
render() {
return (<div>{
this.state.flag ?
[<Child key="a" text="111" />,
<Child key="b" text="222" />]:
[<Child key="a" text="333" />,
<Child key="b" text="444" />]
}</div>
);
}
}
class Child extends React.Component {
constructor(props) {
super(props);
this.state = {
text: props.text
};
}
render(){
return <span className={this.state.text}>{this.state.text}</span>
}
componentDidMount(props){
console.log("Child did mount")
}
componentWillReceiveProps(props){
console.log("Child ",this.props.text, "will receive")
this.setState({
text: props.text
})
}
componentWillUpdate(props){
console.log("Child ",this.props.text, "will update")
}
componentDidUpdate(props){
console.log("Child ",this.props.text, "did update")
}
}
var s = ReactDOM.render(<App />, div);
s.setState({
flag: 0
})
</script>
</body>
</html>
from anu.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<!-- <script type='text/javascript' src="./lib/shallowCompare.js"></script>-->
<script type='text/javascript' src="./dist/React.js"></script>
</head>
<body>
<div>开发者工具</div>
<pre>
A did mount
B did mount
C did mount
A will receive
B will receive
C will receive
A did update
B did update
C did update
A will receive
B will receive
C will receive
A did update
B did update
C did update
</pre>
<div id='example'></div>
<script type='text/babel'>
var container = document.getElementById("example")
var div = container
// var PropTypes = React.PropTypes
if(!window.ReactDOM){
window.ReactDOM = window.React
}
var PropTypes = React.PropTypes
var expect = function(a) {
return {
toBe: function(b) {
console.log(a, "\nvs\n",b, a === b)
}
}
}
var list = []
function logger(a){
console.log(a)
}
var a = 1;
class A extends React.Component {
constructor(props) {
super(props);
this.state = {
text: "aaa"
};
}
componentDidMount() {
logger("A did mount");
ReactDOM.render(<div><A text="111"/><B text="222"/><C text="333"/></div>, div);
}
componentWillReceiveProps(){
logger("A will receive");
}
componentDidUpdate() {
logger("A did update");
if(a){
a = 0;
ReactDOM.render(<div><A text="111"/><B text="222"/><C text="333"/></div>, div);
}
}
render() {
return <div>{this.state.text}</div>;
}
}
class B extends React.Component {
constructor(props) {
super(props);
this.state = {
text: "bbb"
};
}
componentDidMount() {
logger("B did mount");
}
componentWillReceiveProps(){
logger("B will receive");
}
componentDidUpdate() {
logger("B did update");
}
render() {
return <div>{this.state.text}</div>;
}
}
class C extends React.Component {
constructor(props) {
super(props);
this.state = {
text: "ccc"
};
}
componentWillReceiveProps(){
logger("C will receive");
}
componentDidMount() {
logger("C did mount");
}
componentDidUpdate() {
logger("C did update");
}
render() {
return <div>{this.state.text}</div>;
}
}
var s = ReactDOM.render(<div><A/><B/><C/></div>, div);
</script>
</body>
</html>
此例子用于验证drainQueue开头几句话
export function drainQueue() {
var queue = mainQueue.shift();
//如果父元素拥有多个子组件,如果第一个组件在mounted/updated钩子里再次更新父元素,
//那么mainQueue可能没有子数组了,需要置换queue为currentQueue,执行里面的mounted/updated钩子
if(!queue && currentQueue.length){
queue = currentQueue;
}
options.beforePatch();
//先执行所有元素虚拟DOMrefs方法(从上到下)
Refs.clearElementRefs();
let needSort = [],
//....略
}
from anu.
Related Issues (20)
- nanachi版本升到最新版,windows系统编译没有反应 HOT 1
- 请教,应该使用哪个版本的devtools呢 HOT 1
- setState的疑问
- input输入汉字不触发onChange事件 HOT 2
- 项目是否考虑升级为ts HOT 1
- 二次元魔法师希望你在那边过的开心
- 1 HOT 1
- 致敬,大佬走好 HOT 9
- RIP
- RIP HOT 5
- 致敬
- 致敬,默哀 HOT 3
- 一路走好
- 走好 HOT 3
- RIP
- 官方Q群加不进去
- 走好 大佬
- RIP ,走好大佬
- 大佬 走好
- 大佬 走好!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from anu.