全栈开发前端面试题

React 和 Vue 基础知识对比

2019-07-17  本文已影响60人  Grit0821

React 和 Vue 都是现在流行的前端库,而前端的核心就在于对数据的请求和操作页面DOM元素;遵循MVVM思想,二者对视图和数据的绑定操作有一定的相似。
归根结底还是三大基本问题:

  1. 渲染什么
    渲染的内容是什么 ,渲染的DOM结构是什么?
  2. 在哪里渲染?
    挂载到页面哪里
  3. 怎么渲染
    渲染时的数据怎么存储和更改,数据通信怎么操作?,子组件怎么使用?

1.渲染什么

class Button extends React.Component{
  constructor(){
    super()
  }
  render(){
    return()
  }
}

function组件,return JSX

function Button() {
  return ()
}

2. 在哪里渲染

React和Vue创建实例之后都必须挂载到DOM元素上才会生效。

ReactDOM.render(
  <Index />,
  document.getElementById('root')
)                           

3. 怎么渲染

3.1数据/包含组件中数据 存储

对要渲染的数据进行存储和操作

class LikeButton extends Component {
  constructor () {
    super()
    // 初始化数据
    this.state = { isLiked: false }
  }

  handleClickOnLikeButton () {
    // 修改数据
    this.setState({
      isLiked: !this.state.isLiked
    })
  }

  render () {
    return (
      <button onClick={this.handleClickOnLikeButton.bind(this)}>
        {this.state.isLiked ? '取消' : '点赞'} 👍
      </button>
    )
  }
}

2.function组件
通过hooks API 使用 state,useStateuseEffect,通过{}插值

function App() {
  const [count, setCount] = useState(0);
  const [user, setUser] = useState({
    name: "frank",
    age: 18,
    hobbies: ["lol", "ball", "movie"]
  });
  // useEffect(() => {
  //   document.getElementById("output").innerText = count;
  // });
  const add = () => {
    setCount(count + 1);
  };
  const old = () => {
    setUser({
      ...user, //把user的内容全部映射过来
      age: user.age + 1
    });
  };
  };
  return (
    <div>
      <div>{count}</div>
      <div>
        <button onClick={add}>+1</button>
      </div>
      <div>
        {user.name},{user.age},<br />
      </div>
      <div>
        <button onClick={old}>+1</button>
      </div>
    </div>
  );
}

3.2操作数据

3.3生命周期

3.4数据通信,组件通信,状态仓库管理

状态仓库管理

3.5路由

ReactDOM.render(
  <Router>
    <div>
      <div>
        <Link to="/">
          <button>首页</button>
        </Link>{" "}
        |<Link to="/login">登录</Link> |<Link to="/signup">注册</Link> |
        <Link to="/welcome">欢迎</Link>
      </div>
      <Route path="/" exact component={App} />
      <Route path="/login" component={Box2} />
      <Route path="/signup" component={Box1} />
      <Route path="/welcome" component={Welcome} />
    </div>
  </Router>,
  rootElement
);

<Link> to属性决定跳转路径,<Router>根据path决定显示的组件及其位置。

上一篇下一篇

猜你喜欢

热点阅读