Comments (3)
var container = document.getElementById("example")
var div = container
var PropTypes = React.PropTypes
if(!window.ReactDOM){
window.ReactDOM = React
}
var expect = function(a) {
return {
toBe: function(b) {
console.log(a,"vs", b, a === b)
},
toEqual(b){
console.log(a,"vs", b, a +""=== b+"")
},
toThrow(b){
try{
a()
}catch(e){
console.log(e,"vs", b, e.message +""=== b+"")
}
}
}
}
function dispatchEventOnNode(node, type) {
node.dispatchEvent(new Event(type, {bubbles: true, cancelable: true}));
}
function emptyFunction(){
console.log("empty")
}
var setUntrackedValue = Object.getOwnPropertyDescriptor(
HTMLInputElement.prototype,
'value',
).set;
var stub = (
<select multiple={true} defaultValue={["giraffe", "gorilla"]}>
<option value="monkey">A monkey!</option>
<option value="giraffe">A giraffe!</option>
<option value="gorilla">A gorilla!</option>
</select>
);
var options = stub.props.children;
stub = ReactDOM.render(stub, container);
var node = ReactDOM.findDOMNode(stub);
expect(node.options[0].selected).toBe(false); // monkey
expect(node.options[1].selected).toBe(true); // giraffe
expect(node.options[2].selected).toBe(true); // gorilla
// Changing `defaultValue` should do nothing.
ReactDOM.render(
<select multiple={true} defaultValue={["monkey"]}>
{options}
</select>,
container
);
expect(node.options[0].selected).toBe(false); // monkey
expect(node.options[1].selected).toBe(true); // giraffe
expect(node.options[2].selected).toBe(true); // gorilla
console.log("第二个测试")
var container = document.createElement("div")
document.body.appendChild(container)
var stub = (
<select defaultValue={"yyy"}>
<option value="xxx">xxx</option>
<option value="yyy">yyy</option>
<option value="zzz">zzz</option>
</select>
);
var options = stub.props.children;
stub = ReactDOM.render(stub, container);
var node = ReactDOM.findDOMNode(stub);
expect(node.options[0].selected).toBe(false); // monkey
expect(node.options[1].selected).toBe(true); // giraffe
expect(node.options[2].selected).toBe(false); // gorilla
// Changing `defaultValue` should do nothing.
ReactDOM.render(
<select defaultValue={"zzz"}>
{options}
</select>,
container
);
expect(node.options[0].selected).toBe(false); // monkey
expect(node.options[1].selected).toBe(true); // giraffe
expect(node.options[2].selected).toBe(false); // gorilla
console.log("第三个测试")
var container = document.createElement("div")
document.body.appendChild(container)
var stub = (
<select defaultValue="giraffe">
<option value="monkey">A monkey!</option>
<option value="giraffe">A giraffe!</option>
<option value="gorilla">A gorilla!</option>
</select>
);
var options = stub.props.children;
stub = ReactDOM.render(stub, container);
var node = ReactDOM.findDOMNode(stub);
expect(node.value).toBe("giraffe");
// Changing `defaultValue` should do nothing.
ReactDOM.render(<select defaultValue="gorilla">{options}</select>, container);
expect(node.value).toEqual("giraffe");
console.log("第四个测试")
var container = document.createElement("div")
document.body.appendChild(container)
var el = (
<select defaultValue="giraffe">
<option value="monkey">A monkey!</option>
<option value="giraffe">A giraffe!</option>
<option value="gorilla">A gorilla!</option>
</select>
);
var stub = ReactDOM.render(el, container);
var node = ReactDOM.findDOMNode(stub);
expect(node.value).toBe("giraffe");
node.value = "monkey";
ReactDOM.render(el, container);
// Uncontrolled selects shouldn't change the value after first mounting
expect(node.value).toEqual("monkey");
from anu.
光标处理的例子
class Input extends React.Component {
state = {value: 'first'};
render() {
return (
<input
onChange={e => this.setState({value: e.target.value})}
value={this.state.value}
/>
);
}
update(){
this.setState({value:"first11"})
}
}
var a = ReactDOM.render(<Input />, container);
var dom = ReactDOM.findDOMNode(a)
console.log("设置光标")
dom.focus()
dom.selectionStart = 3
dom.selectionEnd = 3
setTimeout(function(){
console.log("更新内容会影响光标但不会让光标消失")
a.update()
},3000)
from anu.
var breakNode = {
form: 1,
body: 1
};
function syncOtherRadios(dom, v) {
var queryRoot = dom;
while (queryRoot.parentNode) {
if (breakNode[queryRoot.nodeName.toLowerCase()]) {
break;
}
queryRoot = queryRoot.parentNode;
}
var inputs = queryRoot ? queryRoot.getElementsByTagName("input") : [];
for (var i = 0, el; (el = inputs[i++]); ) {
if (el !== dom && el.type === dom.type && el.name === dom.name && el.form === dom.form) {
if (el.checked !== !v) {
el.checked = !v;
}
}
}
}
function keepPersistValue(e) {
var dom = e.target;
var name = e.type === "textarea" ? "innerHTML" : /check|radio/.test(dom.type) ? "checked" : "value";
var v = dom._persistValue;
if (dom.type === "radio") {
syncOtherRadios(dom, v);
}
var noNull = v != null;
var noEqual = dom[name] !== v; //2.0 , 2
if (noNull && noEqual) {
dom[name] = v;
}
}
from anu.
Related Issues (20)
- input输入汉字不触发onChange事件 HOT 2
- 项目是否考虑升级为ts HOT 1
- 二次元魔法师希望你在那边过的开心
- 1 HOT 1
- 致敬,大佬走好 HOT 9
- RIP
- RIP HOT 5
- 致敬
- 致敬,默哀 HOT 3
- 一路走好
- 走好 HOT 3
- RIP
- 官方Q群加不进去
- 走好 大佬
- RIP ,走好大佬
- 大佬 走好
- 大佬 走好!
- 还有人维护这个库吗?
- IE8别用这个库,有内存泄漏问题,我因为自己的机器是ie11写完了才发现,特此提醒你们,并且以后也不会有人维护了 HOT 1
- 大佬走好
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.