hyperstack-org / hyperstack-org/hyperstack

Router history#push and #replace should accept optional hash second parameter

Đang mở
#309 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
JavaScript
Star
538
Fork
41
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

should be able to do `history.push('/my-page', foo: :manchu)` and have the url be `/my-page?foo=manchu` same with replace

The following patch to Hyperstack::Internal::Router can be added to your hyper_component.rb file:

```ruby
module Hyperstack
module Router
class History
def add_query_params(path, query_params)
return path if query_params.empty?

params = query_params.collect do |k, v|
"#{`encodeURIComponent(#{k})`}=#{`encodeURIComponent(#{v})`}"
end.join('&')
"#{path}#{path =~ /\?/ ? '&' : '?'}#{params}"
end

def push(path, query_params = {})
`#{@native}.push(#{add_query_params(path, query_params)})`
end

def replace(path, query_params = {})
`#{@native}.replace(#{add_query_params(path, query_params)})`
end
end
end
end

module React
class Router
class History
def create_browser_history
Hyperstack::Router::History.new(`#{@native}.createBrowserHistory()`)
end

def create_hash_history
Hyperstack::Router::History.new(`#{@native}.createHashHistory()`)
end

def create_memory_history
Hyperstack::Router::History.new(`#{@native}.createMemoryHistory()`)
end
end
end
end
```

> Note: The second patch to `React::Router::HIstory` makes the push/replace work in the top level router `history` class method as well.


What was happening was create_memory_history was an alias_native of createMemoryHistory. When alias_native is used, the result if not an object that maps directly to ruby will be automatically wrapped in a NativeObject instance. This is also what Hyperstack::Router::History does, but it also adds other methods to the instance.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.