QianmiOpen/plume2

暴露出来DynamicQuerylang,方便在render中计算DQL

Closed this issue · 3 comments

暴露出来DynamicQueryLang,方便在render中计算DQL的值

目前的DQL的的上下文绑定比较弱,只能绑定defaultProps的同名属性,这样不够用,思考是不是可以放开让用户自己定义上下文

假如store的中的state为:

todo: fromJS([
  {id:1, text: 'hello', done: false},
  {id: 2, text: 'world', done: true}
])
const todoItemDQL = QL('todoItemDQL', [
  ['todo', '$index', 'text],

 (text) => text
])

@Relax
class Title extends Component {
   static relaxProps = {
      bigQuery: noop,
   }

  render() {
    const {bigQuery} = this.props.relaxProps
    const ctx = todoItemDQL.withContext({index: 1}).
    const title = bigQuery(new QueryLang(ctx.id(), ctx.lang()))
  }
}

是不是连上下文都不用绑,我在想这样用可不可以:

const todoItemDQL = QL('todoItemDQL', {index, text}, [
  ['todo', index,  text],

 (text) => text
])

@Relax
class Title extends Component {
   static relaxProps = {
      text: 'text',
      todoItem: todoItemDQL,
   }

  render() {
    const {index} = this.props
    const {text} = this.relaxProps
    return (
      <div>{todoItem.bind(this, index, text)}</div>
    )
  }
}

@KeithZhang 这个想法不错,我来试验下

可以设计一个PQL