Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从React到Mithril 2的翻译?(减数分裂的例子)_Javascript_Reactjs_Mithril.js - Fatal编程技术网

Javascript 从React到Mithril 2的翻译?(减数分裂的例子)

Javascript 从React到Mithril 2的翻译?(减数分裂的例子),javascript,reactjs,mithril.js,Javascript,Reactjs,Mithril.js,代码是我们在中找到的一个示例。这是在React中完成的,我正在翻译成Mithril2.0.0-rc.4 class App extends React.Component { constructor(props) { super(props); this.navigateTo = pageId => pipe( preventDefault, () => this.props.actions.navigateTo(pag

代码是我们在中找到的一个示例。这是在React中完成的,我正在翻译成Mithril2.0.0-rc.4

class App extends React.Component {
  constructor(props) {
    super(props);
    this.navigateTo = pageId =>
      pipe(
        preventDefault,
        () => this.props.actions.navigateTo(pageId)
      );
    this.state = this.props.states();
  }

  componentDidMount() {
    const setState = this.setState.bind(this);
    this.props.states.map(state => {
      setState(state);
    });
  }

  render() {
    const state = this.state;
    const { actions } = this.props;
    const active = pageId => state.pageId === pageId ? " active" : "";
    const Component = pages[state.pageId];

首先,我们只需将渲染更改为视图,但是构造函数(Mithril是一个POJO,所以我们没有它)和组件didmount? 除了将组件didmount更改为oncreate之外,这段代码在做什么?米特里尔需要它吗

const App = {
  oncreate: ???
  view: ({ attrs: { state, actions } }) =>
    const active = pageId => state.pageId === pageId ? " active" : "";
    const Component = pages[state.pageId];

使用mithril的闭包组件生成的代码更小/更简洁

正如我所看到的,组件didmount代码是不需要的

const App = (actions) => {
  const navigateTo = pageId =>
      pipe(
       preventDefault,
        () => actions.navigateTo(pageId)
      )
  return {
    view({ attrs: { state } }) {
      const active = pageId => state.pageId === pageId ? " active" : ""
      const Component = pages[state.pageId]
创建/调用组件的正确方法是:

const View = App(actions) // comp. factory
m.mount(document.getElementById("app"), {
  view: () => m(View, { state: states()})
})
您可以将的版本与。

(Mithril gitter)@fuzetsu:“…使用oninit或闭包作为v1和v2中构造函数的等效项。”