代码是我们在减数分裂中找到的一个示例。它是在反应中完成的,我正在翻译到Mithril 2.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,所以我们没有)和构造函数如何?除了将componentDidMount更改为oncreate之外,这段代码在做什么?米思里需要吗?
const App = {
oncreate: ???
view: ({ attrs: { state, actions } }) =>
const active = pageId => state.pageId === pageId ? " active" : "";
const Component = pages[state.pageId];发布于 2019-05-22 18:00:04
使用mithril的闭包组件,得到的代码更小/更简洁。
正如我分析的那样,不需要componentDidMount代码。
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()})
})https://stackoverflow.com/questions/56256854
复制相似问题