質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

5207閲覧

react render とreturn の違い

whiwhdiw

総合スコア70

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

1グッド

1クリップ

投稿2020/03/14 14:59

編集2020/03/14 15:20

jsxのファイルをtsx&Hooksに書き直していて詰まったところがあるので教えて欲しいです。
*コードを一部抜粋して載せています。
return ( の中には画面で表示させるコンポーネント(html)、stateが変わった時に表示させたいもの(html)を書くと思いますがrender(のなかの関数内に書かれているhtmlはreturn内に書かれているのとはどう違うのでしょうか?
またtsx&hooksに直す最中に
Cannot find name 'render'.ts(2304)というエラーが出ているのですがこれはどういう時になるエラーなのでしょうか?
ざっくりとした質問ですいませんがわかる方がいましたら教えて欲しいです。

interface IState { // 使うstateの型を定義している }; const index: FC<Props> = () => { const [state, setState] = useState<IState>({ // 使うstateを書いている });  const renderGroupName = (names) => { return names.map((name, i) => <span key={i} className=""> {name} </span> ); } const onChange = (key: string, value: number) => { setState({ ...state, groups: Object.assign({}, this.state.groups, { [key]: value }) }); } render() { const { newGroup } = this.state; const groupsNode = state.selectGroup.map((group, index) => ( <p key={index} > {Index.renderGroupName(group.pathNames)} <span className="close-btn" onClick={() => onClickGroup(group, 'selectGroups')} >×</span> </p> )); const addModal = ( <AddModal open={state.isShowModal} onClick={() => this.onClickCloseModal('Close')} onClickAddGroupFunc={onClickGroups} /> ); return ( <div className="bottom-margin"> <div className="input-form"> <div className="caption-small"> 名前 </div> <div className="pr4"> <input className="textfield__input" placeholder="姓" value={newGroup.lastName} onChange={(e) => onChange('Name', e.target.value)} /> </div> <Button className="mdl-button" onClick={onClickAddNew} > 登録する </Button> </div> </div> {addModal} ); }
s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

色々と勘違いされていると思います。
まず、大前提として、render関数が必要なのは class component のみで、function component には render 関数は必要ありません。
class component の render 関数の戻り値と function component の戻り値は同じように扱われます。
したがって、function component 内でrender 関数を書く意味はありません。

Cannot find name 'render'.ts(2304)というエラーが出ているのですがこれはどういう時になるエラーなのでしょうか?

こちらは render 関数が定義されていない場合にでます。
class component では render 関数を定義することが必須要件なので、定義していない場合はこういったエラーが出ます。

投稿2020/03/14 15:27

nerianighthawk

総合スコア544

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

whiwhdiw

2020/03/14 15:43

ありがとうございます。 hooksはクラスコンポーネントを書かずに関数コンポーネントをクラスのように扱えるもので renderが使えるのはクラスコンポーネントだけなのでHooksを使う場合はrender()が使えない??というかいらないという考え方であってますか?
nerianighthawk

2020/03/15 01:25

はい、その認識でいいと思います。 そのかわり、function component では return が必要です
whiwhdiw

2020/03/15 07:23

ありがとうございます。 renderの中に書いてあるhtmlをreturnの中に書けばいいのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問