関数の引数内で実行される関数？？


下記のコードの意味がよく分からないです。この `strs` は一体どこから来たのでしょうか？

[code]

    setStreams(strs => {
      strs[streamId].removed = true
      return { ...strs }
    })
    
[/code]

これステートのStreamsを呼び出して渡しているんですね。

### 参照

<https://github.com/yassun-youtube/nextjs-agora-
sample/blob/master/pages/index.js#L89>




[`useState`](https://ja.reactjs.org/docs/hooks-reference.html#functional-
updates)の仕様

> 関数は前回の state の値を受け取り

です(、という以外に答えようが無い気がします...)。

どこから来たか、というと React フレームワークから渡された、という回答になるでしょうか。




[`=>`はアロー関数式](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions)と呼ばれ、関数オブジェクトを構築します。一旦、変数に格納した場合

[code]

    var lambda = strs => {
      strs[streamId].removed = true
      return { ...strs }
    };
    setStreams(lambda);
    
[/code]

であり、[function関数式](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/function)を使って書くと

[code]

    var lambda = function (strs) {
      strs[streamId].removed = true
      return { ...strs }
    };
    setStreams(lambda);
    
[/code]

概ねこのような意味になります。

> この `strs` は一体どこから来たのでしょうか？

上記から分かると思いますが、`strs`はどこかから来たのではなく、関数の仮引数です。

