Buenos días chicos, necesito mostrar una cadena epub base64 en la vista web, que en realidad funciona para archivos más pequeños, pero una vez que el archivo tiene más de 8 mb, no obtengo una pantalla.
Alguien sugirió desde este enlace: https://github.com/victorsoares96/epubjs-react-native/issues/8#issuecomment-1141395428
Que debería usar debounce lodash, y después de averiguar sobre debounce, me doy cuenta de que es como un retraso de tiempo de espera para buscar algo.
Por favor, ¿cómo puedo aplicar el rebote a mi código a continuación para mostrar mi epub base64 en una vista web si el archivo es bastante grande?
Por favor, compruebe el código a continuación:
viewFile = async (fileUri, title) => { let file = await FileSystem.readAsStringAsync(fileUri, { encoding: "base64", }); this.setState({ base64Code: base64.decode(file), downloading: false, }); this.props.navigation.navigate("Views", { base64Code: this.state.base64Code, title: title, }); };Ver a continuación: el código es bastante largo, pero pondré las partes importantes:
export default class ViewScreen extends React.Component { constructor(props) { super(props); this.state = { title: this.props.navigation.getParam("title"), added: false, base64Code: this.props.navigation.getParam("base64Code"), }; } componentWillUnmount() { this.setState({ base64Code: "", title: "", }); } render() { const html = ` <html> <head> <meta charset="UTF-8"> <script> book = null; var b64 = ${JSON.stringify(this.state.base64Code)}; var bin = atob(b64); var obj = document.createElement('object'); obj.style.width = '100%'; obj.style.height = '842pt'; obj.type = 'application/epub+zip'; obj.data = 'data:application/epub+zip;base64,' + b64; ... </script> </body> </html>`; return this.state.base64Code !== "" && this.state.base64Code !== null ? ( <View style={{ flex: 1 }}> <WebView source={{ html: html }} javaScriptEnabled={true} onMessage={(m) => this.onMessage(m)} /> </View> ) : ( <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}> <Text style={{ textAlign: "center" }}> Book Render Error, Please contact administrator at info@wabp.com.ng </Text> </View> ); } }Por favor donde aplico el debounce. No entiendo muy bien cómo hacerlo.
Gracias
Tim