How it feels to learn JavaScript in 2016
import React from 'react'; import { makeStyles } from '@material-ui/core/styles';
const useStyles = makeStyles({
export const useStyles = makeStyles({
root: { backgroundColor: 'red', color: props => props.color, }, }); export default function MyComponent(props) { const classes = useStyles(props); return <div className={classes.root} />; }
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
export default function MyComponent(props) {
const classes = useStyles(props);
return <div className={classes.root} />;
}
const useStyles = makeStyles({
root: {
backgroundColor: 'red',
color: props => props.color,
},
});
source: material-ui.com
MyComponent.jsx
/* recommended */
function SessionsController() {
var vm = this;
vm.gotoSession = gotoSession;
vm.refresh = refresh;
vm.search = search;
vm.sessions = [];
vm.title = 'Sessions';
////////////
function gotoSession() {
/* */
}
function refresh() {
/* */
}
function search() {
/* */
}
}
export interface Dataservice {
getAvengers(): Avenger[];
}
angular
.module('app.core')
.factory('dataservice', dataservice);
dataservice.$inject = ['$http'];
function dataservice($http: IHttpService): Dataservice {
return {
getAvengers
};
function getAvengers(): Avenger[] {
return $http.get('/api/maa')
.then(getAvengersComplete)
.catch(getAvengersFailed);
function getAvengersComplete(response) { /* ... */ }
function getAvengersFailed(error) { /* ... */ }
}
}
components
Table
, TableView
- ...useAssignedTags
useMountSubscription
import React, { useState } from 'react';
import { useMountSubscription } from '../common';
import { getProject, Project as Model } from './project.api';
import { clickProject } from './project.service';
export interface ProjectProps {
id: number;
}
export function Project({ id }: ProjectProps) {
const [project, setProject] = useState<Model>();
useMountSubscription(() => getProject(id).then(setProject));
if (!project) {
return null;
}
return (
<ul onClick={() => clickProject(project)}>
<li>{project.name}</li>
<li>{project.type}</li>
</ul>
);
}
clickProject