2017-04-07 5 views
1
Red [needs: 'view] 

num: ["1^/"] 
k: num/1 

view [ 
    size 600x600 
    txt: text 30x50 k 
    ar: area 300x400 "" focus on-change[ 
     txt/size: ar/size 
     len: length? split face/text newline 
     either (len - face/data) > 0 [ 
       append num append form (len + 1) newline 
       face/data: len 
     ][ 
       remove back tail num 
       face/data: face/data - 1 
      ] 
      txt/text: form num 
    ] 
    do [ar/data: 0] 
] 

この赤いプログラムには、「テキストフェイス」と「エリアフェイス」が含まれています。テキストの面には、シリアル番号の垂直リストが含まれています。エリア面に改行が追加されると、シリアル番号は行数に応じて増加します。また、エリアフェイスでラインが削除されると、シリアル番号も減少します。リアクティブメソッドを使用したVIDの赤い更新テキスト

これは非反応性の方法を使用しています。それを行うための反応的なアプローチはありますか?

+0

、https://codereview.stackexchange.com/があります。最良の方法(私が思う)はそこに投稿し、gritter.im/red/help channelからそれにリンクすることです –

答えて

0

私はあなたがreact機能を探していると信じています。反応的なフレームワークはthis blog postに導入されており、on-changeを使用してその反応バージョンに変換する例と非常によく似た例があります。

最近、私はレッドについて多くのことを読んでいましたが、最初の練習を探していました。私to-list実装は、おそらく改善される可能性が、ビューの宣言は今よりコンパクトです:動作するコードについては

Red [needs: 'view] 

to-list: function [text][ 
    ; converts text area string to list of numbers separated by newlines 
    txt: copy text 
    append txt "dummy" ; handle empty lines 
    len: length? split txt newline 
    x: copy "" 
    repeat i len [ append x mold i append x newline] 
] 

view [ 
    size 600x600 
    text 30x600 react [ 
     face/text: to-list text-area/text 
    ] 
    text-area: area 300x400 "" 
] 
関連する問題