GithubHelp home page GithubHelp logo

ymfe / qreact Goto Github PK

View Code? Open in Web Editor NEW
308.0 22.0 21.0 5.93 MB

QReact 是去哪儿网 YMFE 团队推出的 100% 兼容官方 React 的迷你框架

Home Page: https://qreact.ymfe.org/

License: Apache License 2.0

JavaScript 100.00%
react mini-react qreact

qreact's People

Contributors

gogoyqj avatar roland-reed avatar rubylouvre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qreact's Issues

需要明确一下协议

当前在LICENSE文件中是Apache 2.0协议,而在package.json中是MIT协议,�不知应当如何理解

已经发布到npm的历史版本应该都是MIT协议了,后续版本会更换协议吗?

__mergeStates需要校验__pendingStates是否为undefined

var n = this.__pendingStates.length;

此处的this.__pendingStates可能为undefined,因此出现类似错误:

React.js:901 Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
    at Object.__mergeStates (React.js:901)
    at Object.mountComponent (React.js:2008)
    at mountVnode (React.js:1894)
    at Object.mountComponent (React.js:2015)
    at mountVnode (React.js:1894)
    at Object.mountComponent (React.js:2015)
    at mountVnode (React.js:1894)
    at mountChildren (React.js:1966)
    at Object.mountElement (React.js:1946)
    at mountVnode (React.js:1894)

似乎某些组件的生命周期与React有所不同

时间有限,暂时没有找到根源,贴2个图:

  • React的效果:

    jietu20170921-173104 2x
  • QReact的效果:

    jietu20170921-172948 2x

错误的起因是connect的时候mapStateToProps有异常,因此connect组件render时就会抛出,但是在React下,connect组件被unmount以后就不会再渲染所以没出现异常,而qreact下又进行了一次渲染

后续有时间了我会继续研究下,当然你们能这样就知道是啥问题最好了

React.createElement第一个参数只能是函数或字符串

异常出现在create-react-app + react-app-rewired中使用时,求指导。

  • config-overrides.js
module.exports = function override(config, env) {
	// do stuff with the webpack config...
	config.resolve = config.resolve || {};
        config.resolve.alias = config.resolve.alias || {};
	config.resolve.alias['react'] = 'qreact/dist/ReactIE';
	config.resolve.alias['react-dom'] = 'qreact/dist/ReactIE';
	config.resolve.alias['prop-types'] = 'qreact/lib/ReactPropTypes';
	config.resolve.alias['create-react-class'] = 'qreact/lib/createClass';

	config.resolve.alias['react-tap-event-plugin'] = 'qreact/lib/injectTapEventPlugin.js';

    return config;
};
  • index.js
require('es5-shim/es5-sham');

const React = require('react');
const ReactDOM = require('react-dom');
const App = require('./App');
//const registerServiceWorker = require('./registerServiceWorker');


ReactDOM.render(<App />, document.getElementById('root'));
//registerServiceWorker();```

根据条件返回null或其它元素的组件多次渲染时位置出错

不是太容易形容这个问题,以下是复现的代码:

import {Component} from 'react';
import {render} from 'react-dom';

const Text = ({visible}) => {
    if (visible) {
        return <div>Text</div>;
    }

    return null;
};

class App extends Component {
    state = {
        showText: true
    };

    render() {
        const {showText} = this.state;

        return (
            <div>
                <Text visible={showText} />
                <button type="button" onClick={() => this.setState({showText: !showText})}>Click</button>
            </div>
        );
    }
}

render(
    <App />,
    document.body.appendChild(document.createElement('div'))
);

多次点击按钮可以看到效果:

jietu20170921-114729

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.