Reactコンポーネントでiframeのコンテンツを設定しようとしています。私はhandleStatementPrint
関数が含まれているコンポーネントを持っています。この関数は、iframeの読み込みが完了したときに呼び出さなければなりません。この関数は、URL if this.props.pdfs.url
でアクセスされた読み込まれたiframeコンテンツ - pdfファイルを出力する必要があります。すでにiframeコンテンツが読み込まれていて、iframeのpdfファイルを見ることができますが、iframeコンテンツをrefで渡す必要がありますが、正しく行う方法はわかりません。私はcomponentDidMount
を使用する必要があることを知っていますが、ここに書き込むことはわかりません。iframeをrefで処理する
import React, { Component } from 'react'
import IframeComponent from './components/Iframe';
class MainComponent extends Component {
handleStatementPrint =() => {
const iframePdf = this.iframePdf.contentWindow;
if (this.iframePdf !== undefined) {
const iframePdf = this.iframePdf.contentWindow;
iframePdf.print();
}
}
render() {
return (
<div className="container">
{
this.props.pdfs &&
<iframe
ref={(frame) => { this.iframePdf = frame }}
src={this.props.pdfs.url}
title="iFramePdf"
type="application/pdf"
>
</iframe>
}
</div>
);
}
};
export default Statement;
iframeコンポーネント:
012:私はこの例を試してみましたよ
import React, { Component } from 'react'
class IframeComponent extends Component {
componentDidMount() {
// Load iframe content
}
render() {
return (
<div>
<Iframe />
</div>
);
}
};
export default Iframe;
コンポーネント魔女は、iframeのコンテンツを持っている必要があります
インラインフレームコンテンツがフェッチAPIから来ている、しかし、私は、IFRAMEにアクセスすることができ、コンテンツが完全にREFを使用してロードされていることがわかります。問題:handleStatementPrint
の機能を別のコンポーネントから呼び出す前に、そのコンテンツをcomponentDidMount
メソッドにロードする必要があります。
質問:
componentDidMountmethodのコンテンツをロードするために参照文献と正しくiframeのコンテンツを渡すために、どのように?
ロードされたコンテンツを
componentDidMount
メソッドから渡す方法MainComponent機能、ロードされたコンテンツでアクションを実行するには?
が、インラインフレームをロードする方法:コンポーネントの後
は、コンポーネント自体とそのメソッドへのアクセスを得る搭載されていますcomponentDidMountメソッドのコンテンツ、そして別のコンポーネントのhandleStatementPrint関数は、iframeコンテンツにアクセスし、そのアクションを実行しますか? –
iframeのコンテンツは同じ原点から来ますか?そうでない場合は、iFrameコンテンツに直接アクセスすることはできません。 https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy –
iframeコンテンツのsrc urlはfetch APIからのものですが、iframeにアクセスしてそのコンテンツ(pdf URL)を見ることができます。 refを使用して完全にロードされます。問題:ロードされたiframeコンテンツを印刷できる別のコンポーネントからhandleStatementPrint関数を呼び出す前に、componentDidMountメソッドでそのコンテンツをロードする必要があります。 componentDidMountの内容が –