Skip to content

Instantly share code, notes, and snippets.

@terrierscript
terrierscript / file0.txt
Last active July 19, 2018 16:43
create-react-appでの素振り時にparcelに切り替えてしてTypeScript化する ref: https://qiita.com/terrierscript/items/dc0e7eb254ae38406404
$ npx create-react-app example-app
@terrierscript
terrierscript / file0.txt
Last active August 19, 2018 06:31
ReactでHoCsの代わりとしてFunction as Child Componentsを利用して型もつける ref: https://qiita.com/terrierscript/items/03df4d522cf9cf431021
const withStaticValue = (WrappedComponent) => {
class HOC extends React.Component {
render() {
return (
<WrappedComponent
value={1234}
/>
);
}
}
@terrierscript
terrierscript / file0.js
Last active January 19, 2019 06:16
Vue.jsのmixinをslotで代用する ref: https://qiita.com/terrierscript/items/f051617522b20d57fd7b
// mouseMixin.js
export default {
data() {
return {
x: 0,
y: 0
};
},
methods: {
mousemove(e) {
@terrierscript
terrierscript / 1.js
Last active April 4, 2018 08:25
https://codesandbox.io/s/8nq4w3jj39 このデモ読み解いたもの
import React from "react";
import { createResource, createCache } from "simple-cache-provider";
const cache = createCache();
// このサンプルでは、ただtextを非同期で返しているだけ。msは遅延秒数
const readText = createResource(
// 第一引数は非同期処理の関数。Promiseを返す
([text, ms = 0]) => {
return new Promise(resolve => {
console.log(new Date().getTime(), "Promise created, will resolve in ", ms);
// reactの場合
onInvalidClick(e) {
}
onValidClick = (e) => {
}
render(){
return <div>
<button onClick={onValidClick} />
<button onClick={onInvalidClick} />
</div>
<some-item>
<h3>Good Title</h3>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt</div>
</some-item>
import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
const CounterContext = React.createContext();
const Child = () => {
return (
<CounterContext.Consumer>
{({ count, increment, decrement }) => {
return (
// createContextでコンテキストを生成。`light`がデフォルト値
const ThemeContext = React.createContext('light');
// ユーザー情報のContext
const UserContext = React.createContext();
// Contextどっちも使うパターン
function Toolbar(props) {
return (
{/* 初見だとちょっとギョッとするかもしれないが、childrenにfunction渡してるパターン。callbackの値として、themeが返ってくる */}
@terrierscript
terrierscript / file0.html
Created March 5, 2018 13:57
Vue.jsでライブラリ使わずにgoogle mapを利用する ref: https://qiita.com/terrierscript/items/9a9dda5a5ca5b3293d48
<!-- index.html -->
<div id="app">
<my-map :markers='[
{"lat":35.6432027,"lng":139.6729435},
{"lat":35.5279833,"lng":139.6989209},
{"lat":35.6563623,"lng":139.7215211},
{"lat":35.6167531,"lng":139.5469376},
{"lat":35.6950961,"lng":139.5037899}
]'>
</my-map>
@terrierscript
terrierscript / ModalEvent.js
Created January 16, 2018 07:08
Vue.jsでEventBusを利用して別にマウントしたコンポーネントやjQueryからイベントを受け取る ref: https://qiita.com/inuscript/items/fa55d2adde1a17f02e7a
import Vue from "vue"
const OPEN_MODAL = "openModal"
export const ModalEvent = new Vue({
methods: {
emitOpenModal(event){
this.$emit(OPEN_MODAL, event)
},
onOpenModal(cb){
this.$on(OPEN_MODAL, cb)