내 소품이 변경 될 때 Svelte에서 강제로 다시 렌더링하려면 어떻게해야합니까?

스티븐 벨

스프레드 시트의 열 합계와 유사하게 다차원 배열에서 여러 배열의 동일한 인덱스를 합계해야하는 합계 구성 요소가 있습니다. 배열의 값을 변경하고 스프레드 시트의 행을 합산 할 수있는 다른 구성 요소가 있습니다. 배열을 변경 한 후 전체 구성 요소를 다시 렌더링 및 / 또는 열 합계를 업데이트하는 데 문제가 있습니다. 토탈 링 컴포넌트에서 리 액티브 선언을해야한다고 생각했지만 작동하지 않는 것 같습니다.

다음은 REPL에 대한 링크 입니다.

다음은 코드입니다.

Totals.svelte

<script>
    export let jobs

      //this creates a new array which is two indexes long for each of the columns
      //then fills each array with the sum of column
      //HOW DO I GET THIS TO UPDATE EACH TIME A JOB HOURS ENTRY IS CHANGED?
    $: totals = new Array(2).fill(null).map((v, i) => {
    let total = 0;
    jobs.jobHours.forEach((v) => {
      total += Number(v[i]);
    });
    return total;
  });

    //this sums the total hours row to give the grand total
    //HOW DO I GET THIS TO UPDATE EACH TIME THE TOTALS VARIABLE IS CHANGED?
  $: grandTotal = totals.reduce((acc, v) => (acc += v));        

</script>

<style>
  container {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;        

  }
  div {
    width: 100%;
    height: 100%;    
    width: 150px;
  }
</style>

<container>
  <div>Total Hours</div>
  {#each totals as total}
  <div>
    {total}
  </div>
  {/each}
  <div>{grandTotal}</div>
</container>
App.svelte

<script>
    import JobEntries from './JobEntries.svelte';
    import Totals from './Totals.svelte';

    const jobs = {
        jobNames: ['Job1', 'Job2', 'Job3'], 
        jobHours: Array.from(Array(3), () => Array.from(Array(2), ()=>1))
    };
</script>

<JobEntries {jobs}/>
<Totals {jobs} />

JobEntries.svelte

<script>
    export let jobs
    let cell = Array.from(Array(3), () => Array.from(Array(3)));
</script>

<style>
  container {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;

  }
  input, div {
    width: 100%;
    height: 100%;
    min-width: 150px;
  }
</style>

<container>
    <div>
        Name
    </div>  
    <div>
        Time 1
    </div>
    <div>
        Time 2
    </div>
    <div>
        Total
    </div>
  {#each jobs.jobNames as name, i}
            <input
                type="text"                
                bind:this={cell[i][0]}
                bind:value={name}            />
        {#each jobs.jobHours[i] as hour, j}
            <input
                type="number"                
                bind:this={cell[i][j+1]}
                bind:value={hour}
            />
        {/each}
    <div>
        {jobs.jobHours[i].reduce((acc,v)=>acc+=v)}
    </div>
  {/each}
</container>
스티븐 벨

부모 구성 요소에 소품을 바인딩하면 자식 구성 요소가 소품을 변경할 수 있습니다.

App.svelte

<script>
    import JobEntries from './JobEntries.svelte';
    import Totals from './Totals.svelte';
    let jobs = {
        jobNames: ['Job1', 'Job2', 'Job3'], 
        jobHours: Array.from(Array(3), () => Array.from(Array(2), ()=>1))
    };
</script>

<JobEntries bind:jobs/>
<Totals {jobs} />

JobEntries.svelte

<script>
    export let jobs 
    let cell = Array.from(Array(3), () => Array.from(Array(3)));

</script>

<style>
  container {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;

  }
  input, div {
    width: 100%;
    height: 100%;
    min-width: 150px;
  }
</style>

<container>
    <div>
        Name
    </div>  
    <div>
        Time 1
    </div>
    <div>
        Time 2
    </div>
    <div>
        Total
    </div>
  {#each jobs.jobNames as name, i}
        <input
            type="text"                
            bind:this={cell[i][0]}
            bind:value={name}            />
        {#each jobs.jobHours[i] as hour, j}
            <input
                type="number"                
                bind:this={cell[i][j+1]}
                bind:value={hour}
            />
        {/each}
    <div>
        {jobs.jobHours[i].reduce((acc,v)=>acc+=v)}
    </div>
  {/each}
</container>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

RN 0.61에서 상태가 변경 될 때 Main Component에서 Child Component를 다시 렌더링하려면 어떻게해야합니까?

분류에서Dev

상태가 변경 될 때 SceneKit 장면이 제대로 렌더링되지 않도록하려면 어떻게해야합니까?

분류에서Dev

소품이 변경 될 때마다 react-native-animatable에서 애니메이션을 재설정하려면 어떻게해야합니까?

분류에서Dev

모바일에서 웹이 표시 될 때 div 위치를 변경하려면 어떻게해야합니까?

분류에서Dev

소품 데이터가 반응 후크로 변경 될 때 다시 렌더링하고 싶지만 무한 다시 렌더링이 있습니다.

분류에서Dev

설정이 회색으로 표시 될 때 Visual Studio의 텍스트 편집기에서 "변경 내용 추적"기능을 활성화하려면 어떻게해야합니까?

분류에서Dev

두 번째로 표시 될 때 루트 뷰 컨트롤러 A에 내비게이션 바를 표시하려면 어떻게해야합니까? (A> B> A)

분류에서Dev

요소가 표시 될 때 테두리 반경 변경-백분율을 픽셀로 변경하려면 어떻게해야합니까?

분류에서Dev

TornadoFX에서 다른 속성이 변경 될 때 하나의 속성을 변경하려면 어떻게해야합니까?

분류에서Dev

배열 소품이 변경 될 때 React 하위 구성 요소가 다시 렌더링되지 않습니다.

분류에서Dev

페이지의 나머지 부분이 렌더링 될 때까지 기다리지 않고 클릭 즉시 아이콘이 변경되도록하려면 어떻게해야합니까?

분류에서Dev

반복 될 때마다 어레이를 변경하려면 어떻게해야합니까?

분류에서Dev

Google Play 스토어에서 내 앱이 업데이트 될 때 내 앱의 알림을 계속 표시하려면 어떻게해야합니까?

분류에서Dev

내 페이지로 리디렉션 될 때 Jquery Accordion을 축소하려면 어떻게해야합니까?

분류에서Dev

Redux 상태에서 어레이를 매핑 할 때 새 하위 구성 요소 만 다시 렌더링하려면 어떻게해야합니까?

분류에서Dev

파일이 변경 될 때 로컬 폴더를 파일 서버에 즉시 동기화하려면 어떻게합니까?

분류에서Dev

Async / Await, 계속하기 전에 promise가 해결 될 때까지 함수를 강제로 기다리려면 어떻게해야합니까?

분류에서Dev

발화가 학습되지 않음으로 표시 될 때 새 UI에서 강제 학습하려면 어떻게해야합니까?

분류에서Dev

tableView가 표시 될 때 tableView 셀을 다른 순서로 정렬하려면 어떻게해야합니까?

분류에서Dev

다시로드 될 때 Stateless 위젯을 업데이트하려면 어떻게해야합니까?

분류에서Dev

상태 비 저장 구성 요소는 소품이 변경 될 때 다시 렌더링되지 않습니다.

분류에서Dev

Swift 2에서 데이터를 다시로드 할 때 테이블 형식이 변경되지 않도록하려면 어떻게해야합니까?

분류에서Dev

Svelte에서 소품이 변경 될 때 DOM을 새로 고치는 방법은 무엇입니까?

분류에서Dev

Antd 3.26 양식 유효성 검사 메시지는 상태 / 소품이 변경 될 때 새 값으로 다시 렌더링되지 않습니다.

분류에서Dev

폴더가 디렉토리에 추가 될 때 폴더 내에서 특정 파일을 이동하려면 어떻게해야합니까?

분류에서Dev

다른 요소로 스크롤 할 때 내 요소를 표시하려면 어떻게해야합니까?

분류에서Dev

문제 : 메서드 내에서 콜백으로 데이터가 변경 될 때 vue 인스턴스 다시 렌더링

분류에서Dev

클릭했을 때 내가 가지고있는 이미지를 다른 이미지로 변경하려면 어떻게해야합니까?

분류에서Dev

이미지 셀이 축소 될 때 변경하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    RN 0.61에서 상태가 변경 될 때 Main Component에서 Child Component를 다시 렌더링하려면 어떻게해야합니까?

  2. 2

    상태가 변경 될 때 SceneKit 장면이 제대로 렌더링되지 않도록하려면 어떻게해야합니까?

  3. 3

    소품이 변경 될 때마다 react-native-animatable에서 애니메이션을 재설정하려면 어떻게해야합니까?

  4. 4

    모바일에서 웹이 표시 될 때 div 위치를 변경하려면 어떻게해야합니까?

  5. 5

    소품 데이터가 반응 후크로 변경 될 때 다시 렌더링하고 싶지만 무한 다시 렌더링이 있습니다.

  6. 6

    설정이 회색으로 표시 될 때 Visual Studio의 텍스트 편집기에서 "변경 내용 추적"기능을 활성화하려면 어떻게해야합니까?

  7. 7

    두 번째로 표시 될 때 루트 뷰 컨트롤러 A에 내비게이션 바를 표시하려면 어떻게해야합니까? (A> B> A)

  8. 8

    요소가 표시 될 때 테두리 반경 변경-백분율을 픽셀로 변경하려면 어떻게해야합니까?

  9. 9

    TornadoFX에서 다른 속성이 변경 될 때 하나의 속성을 변경하려면 어떻게해야합니까?

  10. 10

    배열 소품이 변경 될 때 React 하위 구성 요소가 다시 렌더링되지 않습니다.

  11. 11

    페이지의 나머지 부분이 렌더링 될 때까지 기다리지 않고 클릭 즉시 아이콘이 변경되도록하려면 어떻게해야합니까?

  12. 12

    반복 될 때마다 어레이를 변경하려면 어떻게해야합니까?

  13. 13

    Google Play 스토어에서 내 앱이 업데이트 될 때 내 앱의 알림을 계속 표시하려면 어떻게해야합니까?

  14. 14

    내 페이지로 리디렉션 될 때 Jquery Accordion을 축소하려면 어떻게해야합니까?

  15. 15

    Redux 상태에서 어레이를 매핑 할 때 새 하위 구성 요소 만 다시 렌더링하려면 어떻게해야합니까?

  16. 16

    파일이 변경 될 때 로컬 폴더를 파일 서버에 즉시 동기화하려면 어떻게합니까?

  17. 17

    Async / Await, 계속하기 전에 promise가 해결 될 때까지 함수를 강제로 기다리려면 어떻게해야합니까?

  18. 18

    발화가 학습되지 않음으로 표시 될 때 새 UI에서 강제 학습하려면 어떻게해야합니까?

  19. 19

    tableView가 표시 될 때 tableView 셀을 다른 순서로 정렬하려면 어떻게해야합니까?

  20. 20

    다시로드 될 때 Stateless 위젯을 업데이트하려면 어떻게해야합니까?

  21. 21

    상태 비 저장 구성 요소는 소품이 변경 될 때 다시 렌더링되지 않습니다.

  22. 22

    Swift 2에서 데이터를 다시로드 할 때 테이블 형식이 변경되지 않도록하려면 어떻게해야합니까?

  23. 23

    Svelte에서 소품이 변경 될 때 DOM을 새로 고치는 방법은 무엇입니까?

  24. 24

    Antd 3.26 양식 유효성 검사 메시지는 상태 / 소품이 변경 될 때 새 값으로 다시 렌더링되지 않습니다.

  25. 25

    폴더가 디렉토리에 추가 될 때 폴더 내에서 특정 파일을 이동하려면 어떻게해야합니까?

  26. 26

    다른 요소로 스크롤 할 때 내 요소를 표시하려면 어떻게해야합니까?

  27. 27

    문제 : 메서드 내에서 콜백으로 데이터가 변경 될 때 vue 인스턴스 다시 렌더링

  28. 28

    클릭했을 때 내가 가지고있는 이미지를 다른 이미지로 변경하려면 어떻게해야합니까?

  29. 29

    이미지 셀이 축소 될 때 변경하려면 어떻게해야합니까?

뜨겁다태그

보관