v-for or map
Vue, Reactでそれぞれ配列を回すときの違い。
配列、オブジェクトを回す時、Vueではv-forを使うのに対し、Reactではmapやforeach (reduce, for)などを使う。もちろん、Vueでもmapなどを使うことはできる。
まず、Vueから
1. basic
- 
Vueには便利なタグ内にDOM操作を行うためのディレクティブというものが存在する。 ( v-bind, v-on, v-model などなど。) その中で、v-forという物が存在する。これは、配列、オブジェクト内の要素をいじるためのディレクティブ。 
- 
temlate内のタグ要素内で、<div v-for="任意の変数 in 配列の変数>xxx 
任意の変数はscriptの中で宣言するは必要ないが、配列の変数はscriptであらかじめ宣言する必要がある。
<template>
	<div id="app">
		<div v-for="item in items">
			{{ item }}
		</div>
	</div>
</template>
<script>
export default {
	data() {
		return {
			items: ['apple', 'banana', 'meron'],
		};
}
})
</script>
			
出力
↓
apple
banana
meron
※簡単にVueプロジェクとを触れる、codesandboxという、sandboxオススメです!
↓
2. 第二引数あり !!
<template>
  <div id="app">
    <ul>
      <p v-for="(value, key) in items" :key="value">
        {{ key }} is {{ value }}
      </p>
    </ul>
  </div>
</template>
<script>
	// (略)
</script>
先程のitemと同じく、任意の第二引数を指定して良い。
keyはインデックスの値で1から呼び出し順にインクリメントされる。
↓
1 is apple
2 is banana
3 is meron
( itemsが配列ではなく、オブジェクトだった場合。)
<script>
export default {
  name: "App",
  data(){
    return {
      items: { message1: 'Hello', message2: 'World' }
    }
  },
};
</script>
値 == 第一引数
プロパティ名 == 第二引数 に対応する。
出力
↓
message1 is Hello
message2 is World
3. 第三引数
<template>
  <div id="app">
    <ul>
      <p v-for="(value, key, index) in items" :key="value">
        {{index}}: {{ value }} is {{ key }}
      </p>
    </ul>
  </div>
</template>
<script>
export default {
  name: "App",
  data(){
    return {
      items: { message1: 'Hoge', message2: 'Foo' }
    }
  },
};
</script>
こちらも第三引数の値は任意で可。
第三引数にはオブジェクトのインデックスが入る。
出力
↓
0: Hoge is message1
1: Foo is message2
React で同じ事をてみると、、、(jsx記法)
出力は同じなので、省略しています。
1
import React from 'react'
const App = () => {
  const items = ['message1', 'message2'];
    return(
        <>
          <ul>
            {items.map(item => <div>{item}</div>
              )}
          </ul>
        </>
    )
}
export default App;
2
配列 ver
(mapも同じく第二引数にインデックスが入るが、0からスタート)
import React from 'react'
const App = () => {
  const items = ['Hello', 'World'];
    return(
        <>
          <ul>
            {items.map((item,index) => <div>{index + 1} is {item}</div>
              )}
          </ul>
        </>
    )
}
export default App;
オブジェクト ver
import React from 'react'
const App = () => {
  let items = {message1: 'Hello', message2: 'World'};
    return(
        <>
          <ul>
            {Object.keys(items).map(key => (
              <div key={key}>
                {key} is {items[key]}
                </div>
            ))}
          </ul>
        </>
    )
}
export default App;
3
import React from 'react'
const App = () => {
  let items = {message1: 'Hello', message2: 'World'};
    return(
        <>
          <ul>
            {Object.keys(items).map((key,index) => (
              <div key={key}>
                {index}: {key} is {items[key]}
                </div>
            ))}
          </ul>
        </>
    )
}
export default App;
感想
Vue
pros
- V-forに入る引数の順番さえ覚えればこっちのもの。
cond
- ディレクティブの書き方を抑えるまで、覚える要素が多いので、vueの書き方に慣れるまでとっつきづらい。
React
pros
- jsの関数を自在に使えるので、Reduceなどを組み合わせて、汎用性が高い。
cons
- Vueのv-forに比べると、色々書かないといけなくて、、、
