Llamo a jquery fun en mi aplicación blazor. Estoy haciendo algunos servicios en Onin. Me gustaría llamar a esta función en mi componente de afeitar. Utilicé el siguiente código en el componente. La función se muestra cuando la página se ha cargado. Pero cuando hago clic o cambio cualquier valor en la página, incluso como un cambio de texto que no está relacionado con la función, la función existía cada vez. ¿Alguna pista?
protected override void OnAfterRender(bool firstRender) { if(!firstRender) { await JsRuntime.InvokeVoidAsync("TextArea.AddLineToTextArea"); }Quizás se pregunte por qué puse (!firstRender), la razón es que, de forma predeterminada, firstRender es falso y no sé la razón. Algunas personas dicen, de acuerdo con esta referencia de componente de Blazor Null en First Render , que si su componente está en if/else causará el problema. pero el mio esta afuera
aquí está mi función para agregar un número de línea al área de texto.
window.TextArea = { AddLineToTextArea:function(){ $(".lined").linedtextarea( {selectedLine: 1} ); // Target a single one $("#inpDefinition").linedtextarea(); } }Si invierte la condición if, debería tener lo que necesita:
protected override void OnAfterRender(bool firstRender) { if (firstRender) { await JsRuntime.InvokeVoidAsync("TextArea.AddLineToTextArea"); } } Este código significa que JsRuntime.InvokeVoidAsync("TextArea.AddLineToTextArea"); La instrucción se ejecutará solo una vez, cuando el componente la haya renderizado por primera vez.
El método OnAfterRender se ejecuta cada vez que se actualiza el componente, por ejemplo, un usuario hace clic en un botón o lo que sea. Pero el parámetro booleano firstRender es igual a verdadero para la primera representación y será falso después.