❤,調用 setState 以後React內部發生了什麼?react
將傳遞給setState的對象和當前對象合併,將觸發和解過程,react構建一個新的react樹,而且進行diff對比,在絕對必要的狀況觸發組件渲染。
參考:https://blog.csdn.net/fuohua/...segmentfault
❤,React Component(組件) vs React Element(元素)區別是什麼
Element是React 中最小基本單位,是普通對象。數組
const element = <div className="element">I'm element</div> //就是一個element
而組件是類或者函數。瀏覽器
參考:https://segmentfault.com/a/11...函數
❤,受控組件和非受控組件是什麼意思
受控組件是React控制的組件,也是表單數據的惟一真理來源;非可控組件指是表單數據由 DOM 處理,而不是您的 React 組件處理的組件,好比:佈局
//咱們使用 refs 來完成這個 class UnControlledForm extends Component { handleSubmit = () => { console.log("Input Value: ", this.input.value) } render () { return ( <form onSubmit={this.handleSubmit}> <input type='text' ref={(input) => this.input = input} /> <button type='submit'>Submit</button> </form> ) } }
參考 同上性能
❤,描述事件在React中的處理方式
爲了解決跨瀏覽器兼容性問題,您的 React 中的事件處理程序將傳遞 SyntheticEvent 的實例,它是 React 的瀏覽器本機事件的跨瀏覽器包裝器。flex
這些 SyntheticEvent 與您習慣的原生事件具備相同的接口,除了它們在全部瀏覽器中都兼容。有趣的是,React 實際上並無將事件附加到子節點自己。React 將使用單個事件監聽器監聽頂層的全部事件。這對於性能是有好處的,這也意味着在更新DOM時,React 不須要擔憂跟蹤事件監聽器。ui
參考 同上this
❤,盒模型與BFC
❤,請描述import/require的原理
❤,根據以下代碼,判斷輸出結果
1,
var User = { coun: 1, getCount: function (){ return this.count; } } var func = User.getCount; console.log(func()); //undifined
2,
function test(){ for (var i=0;i<5;i++){ setTimeout(function (){ console.log(i); },0) } } test();//5,5,5,5,5
3,
var a = { fn: function (){ console.log(fn); } }
4,
function Animal(name){ this.name = name; } Animal.prototype.sayName = function (){ console.log(this.name); } function Cat(name){ Animal.call(this, name) } var kay = new Cat('Jim'); kat.sayName();
5,
<style> .blue{color: blue;} .red{color: red;} </style> <p class="red blue">內容</p>
❤,寫一個數組去重的方法
❤,寫一個大整數乘法計算的方法
❤,寫一個方法,將URL中的查詢字符串解析成一個Object
❤,請使用多種方式實現 左邊定寬400px,右邊自適應
❤,請使用多種方式實現 聖盃佈局 和 雙飛翼佈局
首先,聖盃佈局要符合如下3點要求:
1,三列布局,中間寬度自適應,兩邊定寬 2,中間欄要在瀏覽器中優先展現渲染 3,容許任意列的高度最高
❤,請使用多種方式實現 水平垂直居中
方法1
<style> .box { background-color: #FF8C00; width: 300px; height: 300px; position: relative; } .content { background-color: #F00; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } </style> <div class="box"> <div class="content"> 1234 </div> </div>
方法2
<style> .box { background-color: #FF8C00; width: 300px; height: 300px; display: flex; justify-content: center; align-items: center; } .content { background-color: #F00; width: 100px; height: 100px; } </style> <div class="box"> <div class="content"> 1234 </div> </div>