reactive.calc

Published by onesixx on

Function를 반응형 계산으로 표시합니다.

[반응형 계산]은 다른 reactive value(예: input, reactive.value 및 기타 반응형 계산)에 따라 return값이 달라지는 함수

반응형 값이 변경될 때마다 해당 값에 종속된 모든 반응형 계산은 “무효화”되며,
무효화된 상태에서 호출되면 자동으로 다시 실행됩니다.
반응형 계산이 무효로 표시되면 최근에 해당 계산을 호출한 다른 반응형 계산도 모두 무효로 표시됩니다. 이러한 방식으로 무효화는 서로 의존하는 반응형 계산을 통해 파급됩니다.

first()라는 reactive.calc함수는 input.first()에 따라, return값이 바뀐다.
input.first()값이 눌러질(변경)때마다, 함수내에 모든 계산은 “invalidated, 무효화”되어 다시 계산된다. 또한 최근 first()를 호출했던 result()가 재계산되면서, 연관된 second()도 invalidated되고, 다시 실행된다.

import random
import time
from shiny import App, Inputs, Outputs, Session, reactive, render, ui

app_ui = ui.page_fluid(
    ui.card(
        ui.layout_columns(
            ui.input_action_button("first",  "Invalidate first  computation"),
            ui.input_action_button("second", "Invalidate second computation"),
        ),
        ui.output_text_verbatim("result"),
    )
)

def server(input: Inputs, output: Outputs, session: Session):
    @reactive.calc
    def first():
        input.first()
        first_result = random.randint(1, 1000)
        return first_result

    @reactive.calc
    def second():
        input.second()
        second_result = random.randint(1, 1000)
        return second_result

    @render.text
    def result():
        result = first() + second()
        return str(result)
    
app = App(app_ui, server)
Categories: shiny

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x